Preflight Request
یک درخواست اولیه که توسط مرورگر به سرور فرستاده میشود تا اجازه درخواست اصلی را بگیرد. این درخواست با روش OPTIONS ارسال میشود و شامل اطلاعاتی دربارهی نوع درخواست اصلی و هدرهایی است که قرار است ارسال شوند.
🎯چرا Preflight Request انجام میشود؟
برای اطمینان از ایمنی و امنیت درخواستهای Cross-Origin انجام میشود. هدف این است که سرور قبل از انجام درخواست اصلی بتواند بررسی کند سپس اجازه دهد یا رد کند.
🎗مراحل Preflight
1️⃣ درخواست (OPTIONS):
مرورگر یک درخواست با روش OPTIONS به سرور ارسال میکند. این درخواست شامل هدرهای زیر است:
1- Access-Control-Request-Method:
متد HTTP که در درخواست اصلی استفاده خواهد شد.
2- Access-Control-Request-Headers:
هر هدر سفارشی که در درخواست اصلی استفاده خواهد شد.
3- Origin:
دامنهای که درخواست از آنجا ارسال شده است.
مثال:
OPTIONS /some-resource HTTP/1.1
Host: example.com
Origin: http://example-client.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: Content-Type
2️⃣ پاسخ سرور:
سرور با هدرهای مناسب پاسخ میدهد تا نشان دهد آیا درخواست اصلی مجاز است یا نه.
مثال:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example-client.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type
3️⃣ درنهایت ارسال درخواست اصلی:
اگر سرور پاسخ مثبت دهد، مرورگر درخواست اصلی را ارسال میکند.
🤷🏼♀️كجا Preflight انجام میشود:
🔺 استفاده از روشهای غیرمعمول HTTP مثل PUT، DELETE، PATCH.
🔺 وجود هدرهای سفارشی در درخواست مثل Authorization.
به این ترتیب، Preflight کمک میکند تا درخواستهای ناامن یا غیرمجاز از طرف دامنههای دیگر به سرور ارسال نشوند.