اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در ASP.NET MVC به کمک یک سری فیلتر میتوان مشخص کرد که یک اکشن متد تنها به درخواستهایی از نوع Get پاسخ دهد، دیگری به درخواستهایی از نوع Post و الی آخر. عادت متداول من هم برای نمایش معمولی صفحات، استفاده از حالت HttpGet است که در شبکههای داخلی بدون مشکل کار میکند چون Bot ایی در این شبکهها وجود ندارد و اگر باشد احتمالا یک ویروس است!
اما روی اینترنت وضع فرق میکند. برای مثال یک کنترلر Feed ممکن است درخواستهایی از نوع Head نیز داشته باشد و یا بعضی از Botها بجای Get جهت دریافت اطلاعات فید، از Post هم استفاده میکنند! (مانند فیدبرنر گوگل مطابق لاگهای برنامه!) و در این حالت اگر متد رندر کردن یک فید را به HttpGet تنظیم کرده باشیم، مدام با خطای A public action method xyz was not found on controller abc در لاگهای خطای برنامه مواجه خواهیم شد.
بنابراین بهتر است که در سایتهای عمومی، جهت ارائه اطلاعات و صفحات عمومی، از هیچ نوع فیلتری برای محدود کردن یک اکشن متد که کارش صرفا رندر کردن اطلاعات است، استفاده نکنیم. به این ترتیب اگر کسی توسط درخواستی از نوع Head فقط قصد بررسی تغییرات صورت گرفته را داشت و نه دریافت کل فید، بیجهت آنرا محدود نکرده باشیم.
[HttpGet] public ActionResult Index() { return View(); }
اما روی اینترنت وضع فرق میکند. برای مثال یک کنترلر Feed ممکن است درخواستهایی از نوع Head نیز داشته باشد و یا بعضی از Botها بجای Get جهت دریافت اطلاعات فید، از Post هم استفاده میکنند! (مانند فیدبرنر گوگل مطابق لاگهای برنامه!) و در این حالت اگر متد رندر کردن یک فید را به HttpGet تنظیم کرده باشیم، مدام با خطای A public action method xyz was not found on controller abc در لاگهای خطای برنامه مواجه خواهیم شد.
بنابراین بهتر است که در سایتهای عمومی، جهت ارائه اطلاعات و صفحات عمومی، از هیچ نوع فیلتری برای محدود کردن یک اکشن متد که کارش صرفا رندر کردن اطلاعات است، استفاده نکنیم. به این ترتیب اگر کسی توسط درخواستی از نوع Head فقط قصد بررسی تغییرات صورت گرفته را داشت و نه دریافت کل فید، بیجهت آنرا محدود نکرده باشیم.