ورود

View Full Version : کاربرد HttpOptions چیست؟



mmbguide
پنج شنبه 16 فروردین 1403, 22:47 عصر
سلام خدمت دوستان

آنچه که متوجه شدم اگر یکی از Actionها بصورت HttpOptions تعریف شده باشه در واقع میشه Response بدون Body برای Client ارسال کرد. اما اطلاعاتی که از سمت Server برای Client ارسال میشه یک یا چند Key/Value هستش که در Response Header قرار میدیم و بعد ارسال میکنیم که Client بتونه از داده هایی که دریافت میکنه اقدامات مورد نظر را انجام بده. آیا کاربرد این Verb همینه؟

تشکر

bitasoft.ir
چهارشنبه 06 فروردین 1404, 03:05 صبح
بله، HttpOptions یکی از متدهای HTTP است که معمولاً برای دریافت اطلاعات مربوط به قابلیت‌های یک سرور یا API استفاده می‌شود. اما کاربردهای بیشتری هم دارد.
۱. HttpOptions چیست؟

متد OPTIONS در HTTP برای بررسی اینکه چه متدهایی روی یک منبع (URL) پشتیبانی می‌شوند، استفاده می‌شود.

این درخواست معمولاً بدون Body ارسال می‌شود و پاسخ هم بدون Body است، اما اطلاعاتی در Headers ارسال می‌شود.

می‌تواند برای CORS (Cross-Origin Resource Sharing) هم استفاده شود.

۲. کاربردهای اصلی HttpOptions ۱. دریافت لیست متدهای مجاز (Allowed Methods)اگر کلاینت نمی‌داند که یک API چه متدهایی را پشتیبانی می‌کند، می‌تواند یک درخواست OPTIONS ارسال کند. سرور در Header پاسخ، لیست متدهای مجاز را اعلام می‌کند:
درخواست OPTIONS:


OPTIONS /api/users HTTP/1.1
Host: example.com


پاسخ سرور:


HTTP/1.1 204 No Content
Allow: GET, POST, PUT, DELETE


در این مثال، سرور اعلام می‌کند که روی /api/users، متدهای GET, POST, PUT, DELETE مجاز هستند.
۲. مدیریت CORS (Preflight Request)CORS (Cross-Origin Resource Sharing) قابلیتی است که اجازه می‌دهد یک دامنه (مثلاً frontend.com) به منابع یک دامنه دیگر (api.example.com) دسترسی داشته باشد.
وقتی کلاینت درخواست‌هایی مثل POST یا DELETE را از یک دامنه‌ی دیگر ارسال می‌کند، مرورگر ابتدا یک درخواست OPTIONS (به نام Preflight Request) ارسال می‌کند تا مطمئن شود که سرور این درخواست را قبول می‌کند.
درخواست OPTIONS برای بررسی CORS:


OPTIONS /api/data HTTP/1.1
Host: api.example.com
Origin: https://frontend.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Content-Type


پاسخ سرور:


HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://frontend.com
Access-Control-Allow-Methods: GET, POST, DELETE
Access-Control-Allow-Headers: Content-Type


✅ اگر سرور این Headers را برگرداند، مرورگر اجازه دارد درخواست اصلی را ارسال کند.
۳. بررسی قابلیت‌های خاص سرورگاهی اوقات، سرور می‌تواند اطلاعات دیگری را در Header پاسخ OPTIONS ارسال کند، مثلاً:


Security Policies (مثل Content-Security-Policy)

Rate Limit Policies (مثلاً تعداد درخواست‌های مجاز در یک بازه‌ی زمانی)

۳. نکات مهم درباره‌ی HttpOptions معمولاً پاسخ OPTIONS کد وضعیت (Status Code) 204 No Content دارد، چون نیازی به Body ندارد.
اگر سرور به درخواست OPTIONS پاسخ ندهد، ممکن است مشکلاتی در CORS و API Documentation ایجاد شود.
در فریمورک‌های مختلف مثل ASP.NET Core، می‌توانیم یک Action خاص برای OPTIONS تعریف کنیم یا اجازه دهیم فریمورک به‌صورت خودکار به این متد پاسخ دهد.
۴. نتیجه‌گیری✅ متد HttpOptions فقط برای ارسال Headerها استفاده نمی‌شود، بلکه:
1️⃣ به کلاینت اعلام می‌کند که چه متدهایی روی یک API پشتیبانی می‌شوند.
2️⃣ در CORS Preflight Requests استفاده می‌شود.
3️⃣ اطلاعات خاصی درباره‌ی سرور، مثل محدودیت‌های امنیتی و سیاست‌های API را ارائه می‌دهد.
در مجموع، متد OPTIONS برای دریافت اطلاعات درباره‌ی API و ارتباط ایمن بین دامنه‌ها بسیار مهم است.

سلام خدمت دوستان

آنچه که متوجه شدم اگر یکی از Actionها بصورت HttpOptions تعریف شده باشه در واقع میشه Response بدون Body برای Client ارسال کرد. اما اطلاعاتی که از سمت Server برای Client ارسال میشه یک یا چند Key/Value هستش که در Response Header قرار میدیم و بعد ارسال میکنیم که Client بتونه از داده هایی که دریافت میکنه اقدامات مورد نظر را انجام بده. آیا کاربرد این Verb همینه؟

تشکر

mmbguide
چهارشنبه 06 فروردین 1404, 18:02 عصر
باسلام و تشکر از اطلاعات مفید و کاملتون.