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 کمک می‌کند تا درخواست‌های ناامن یا غیرمجاز از طرف دامنه‌های دیگر به سرور ارسال نشوند.

به Security Hint بپیوندید

اگر علاقه‌مندید تا دانش و تخصص خود را در قالب تدریس، مقاله، ویدیو و غیره با سایر افراد علاقه‌مند به امنیت سایبری به اشتراک بگذارید، به ما بپیوندید