چند وقتی میشد که در وب سرور IIS برخی آدرسها رو که باز می کردیم با خطای 400 Bad Request مواجه می شدیم. اول فکر کردیم که این خطا رو باید توی نرم افزار روی سرور مدیریت کنیم . هر کاری کردیم متاسفانه درست نشد و با وارد کردن کاراکترهای عجیب و غریب مثل درصد و پایپ و ... نتیجه ای که به کاربر نمایش داده میشد 400 Bad Request بود. کلی جستجو کردم تا راهکارش رو پیدا کنم و براتون رفع اشکال خطای 400 Bad Request رو در ادامه قرار بدم اما قبلش باید کمی در مورد دلیل بروز چنین مشکلی براتون توضیح بدم.
دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
دلیل بروز خطای IIS 400 Bad Request - Invalid URL چیست؟
این مشکل عمدتا برای وب سایت هایی رخ می دهد که صفحاتی با فرمت UTF-8 دارند و در عین حال کاراکترهایی بصورت تصادفی یا عمدی در آدرس URL قرار می گیرند که این فرمت را نقض می کنند. به زبان ساده تر ، بیشتر خطاهای نرم افزاری باید در سطح نرم افزار مدیریت شوند ، اگر شما پشتیبانی از UTF-8 را و کاراکترهای خاص را در سطح نرم افزار خود تعریف کرده باشید اما همچنان به این مشکل در وب سرور IIS می خورید ، نکته در اینجاست که اینگونه خطاها اصلا به نرم افزار شما نمی رسند که بخواهید در سطح نرم افزار آنها را مدیریت کنید. خطای IIS 8.5 400 Bad Request - Invalid URL یک خطای سطح سرور و سیستم عامل است که به هیچ عنوان شما لاگهای آن را در سطح نرم افزار مشاهده نمی کنید و به همین دلیل است که در رفع آن به مشکل خواهید خورد. اما چطور مشکل را حل کنیم؟
نحوه رفع خطای IIS 400 Bad Request - Invalid URL در وب سرور IIS
برای اینکار به راحتی هر چه تمام وارد آدرس رجیستری زیر در سرور IIS شوید :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
پس از ورود به این قسمت راست کلیک کرده و دو مقدار DWORD به شکل های زیر و مقادیری که نوشته شده ایجاد کنید :
AllowRestrictedChars = 1
EnableNonUTF8 = 1
در نهایت از محیط رجیستری خارج شوید و سرور را یکبار Restart کنید و از نداشتن مجدد این خطا لذت ببرید.