زمانی که شما به عنوان یک توسعهدهنده وب کار میکنید، حتماً با مفاهیم مختلفی از HTTP Headers آشنا میشوید. این سرفصلها به مرورگر اجازه میدهند تا رفتار درخواستها را تنظیم کند. یکی از این سرفصلها که شاید کمتر به گوش خورده باشد، Timing-Allow-Origin است. این header به شما کمک میکند که مشخص کنید چه منابعی میتوانند اطلاعات مربوط به زمانبندی یک درخواست خاص را مشاهده کنند.
حتماً شما هم متوجه شدهاید که امنیت وب یکی از مسائل حیاتی است که نیازمند توجه ویژهای است. Timing-Allow-Origin به شما این امکان را میدهد که از ارسال اطلاعات حساس به منابع ناصحیح جلوگیری کنید. در حالت کلی، وقتی شما یک عملیات fetch انجام میدهید، مرورگر به صورت پیشفرض اطلاعات زمانبندی را فقط به دامنهای که درخواست initial داده باز میگرداند، میفرستد. با استفاده از header Timing-Allow-Origin، میتوانید این محدودیت را تغییر دهید.
اما بیایید ببینیم استفاده از این header در عمل به چه صورت است. فرض کنید شما یک سرویس API دارید که میخواهید اطلاعات زمان پاسخگویی آن برای بعضی از دامنههای خاص در دسترس باشد. برای اینکار باید از Timing-Allow-Origin در پاسخ سرتیتر HTTP استفاده کنید.
حال ممکن است بپرسید چه زمانی خاصیت Timing-Allow-Origin مفید است؟ پاسخ این است که کاربرد این ویژگی در مواردی است که شما نیاز دارید کنترل دقیقتری بر روی اطلاعات زمانبندی عملیاتهای شبکهای خود داشته باشید، مثلاً برای بهینهسازی عملکرد یا تحلیل دقیقتر توسط ابزارهای مختص خودتان.
نمونه کد Timing-Allow-Origin
HTTP/1.1 200 OK
Timing-Allow-Origin: *
Content-Type: application/json
{"message": "This is a response from the server"}
در این مثال، درخواست HTTP به سرور ارسال شده و سرور با اضافه کردن header Timing-Allow-Origin با مقدار * پاسخ میدهد. این بدان معناست که اطلاعات زمانبندی این پاسخ میتواند توسط هر کسی مشاهده شود.
HTTP/1.1 200 OK
این خط نشاندهنده وضعیت پاسخ HTTP است که 200 OK به معنای موفقیتآمیز بودن درخواست است.Timing-Allow-Origin: *
با قرار دادن ستاره در این قسمت، اجازه داده میشود هر دامنهای بتواند اطلاعات زمانبندی را مشاهده کند.Content-Type: application/json
این خط نوع محتوای پاسخ را مشخص میکند که در اینجا JSON است.{"message": "This is a response from the server"}
این قسمت، بدنه محتوای پاسخ سرور است که به شکل JSON ارائه شده است.