خطای ۴۰۰ چیست ؟
خطای HTTP 400 – Bad Request زمانی رخ میدهد که سرور نتواند درخواست ارسالی از سمت کلاینت (مرورگر) را پردازش کند، زیرا آن درخواست به نوعی ناقص، خراب، ناسازگار یا دارای پارامترهای نامناسب است. برخلاف خطاهای سطح سرور (مانند 500)، خطای 400 مربوط به طرف کاربر است
400 Bad Request
پیامهای متداول مرتبط با خطای ۴۰۰
در مرورگرها یا ابزارهای مختلف، خطای 400 ممکن است به شکلهای مختلف نمایش داده شود:
* HTTP Error 400
webserver
* Your browser sent a request that this server could not understand
webserver
* Bad Request – Invalid URL
webserver
* Request Header Or Cookie Too Large
webserver
دلایل رایج بروز خطای 400
۱- URL نامعتبر یا ساختار نادرست آدرس
یکی از رایجترین دلایل خطای 400، تایپ نادرست URL یا استفاده از کاراکترهای غیرمجاز در آدرس است. گاهی اوقات، پارامترهای طولانی یا کدگذاری نشده در Query String باعث بروز این خطا میشود.
۲- کش یا کوکی خراب در مرورگر
کوکیها یا اطلاعات کششدهی خرابشده در مرورگر میتوانند باعث ارسال درخواستهای ناسازگار به سرور شوند. این آیتم یکی از پرتکرارترین دلایل خطاهای رایج حتی خطای ۵۰۰ سرور است که در این لینک مفصلا به آن پرداخته شده است.
۳- افزونه یا قالب ناسازگار در وردپرس
برخی افزونهها یا قالبها ممکن است در هنگام فراخوانی فایلهای استاتیک یا ارسال درخواستهای Ajax، دادههای ناقص یا ناسازگار ارسال کنند.
۴- محدودیت در سرور (مثلاً محدودیت روی Header Size)
در برخی سرورها (خصوصاً Nginx)، محدودیتهایی روی حجم Header، کوکی یا سایر پارامترها وجود دارد. اگر این پارامترها بیش از حد باشد، سرور درخواست را رد میکند.
۵- ارسال فایل با فرمت نامناسب یا خراب
در فرمهایی که کاربر فایلی را آپلود میکند، اگر فایل ارسالی خراب باشد یا فرمت آن مجاز نباشد، ممکن است خطای 400 رخ دهد.
۶- مشکل در گواهی SSL یا ارسال درخواست HTTPS نادرست
در صورتی که گواهی SSL تنظیم نباشد یا کاربر درخواست به آدرس اشتباه (مثلاً http به جای https) ارسال کند، گاهی منجر به خطای 400 میشود.
خطای 400 در وردپرس: دلایل خاصتر
در سایتهای وردپرسی ممکن است دلایل زیر نیز بهصورت اختصاصی منجر به خطای 400 شوند:
لینکهای شکسته یا ساختار نادرست پیوندهای یکتا
اگر ساختار پیوندهای یکتا دارای خطا باشد، یا فایل `.htaccess` پیکربندی درستی نداشته باشد، ممکن است درخواستهای اشتباهی به سرور فرستاده شوند.
افزونههای امنیتی (مانند Wordfence یا iThemes Security)
این افزونهها ممکن است برخی درخواستها را فیلتر کرده یا مسدود کنند و در نتیجه خطای 400 بازگردانند.
خطا در ارسال فرمها
افزونههایی مانند Contact Form 7 یا Gravity Forms ممکن است در صورت وجود فیلدهای اشتباه یا دادههای ناسازگار، درخواستهای بد به سرور ارسال کنند.
روشهای رفع خطای 400
در ادامه گامبهگام روشهایی را بررسی میکنیم که به شما در شناسایی و رفع خطای 400 کمک خواهند کرد.
قدم اول : بررسی URL
- از کاراکترهای خاص و غیرمجاز مانند `{}[]\^` در آدرس استفاده نکنید.
- از طول بیش از حد در Query String (بخش بعد از `?` در آدرس) پرهیز کنید.
- آدرس را دوباره تایپ کرده و سادهتر کنید.
قدم دوم : پاکسازی کش و کوکی مرورگر
در مرورگر خود:
- به تنظیمات بروید.
- **Clear browsing data** را انتخاب کنید.
- کش و کوکیها را پاک کنید.
- * مرورگر را ببندید و دوباره باز کنید.
قدم سوم: تست در مرورگر دیگر یا حالت ناشناس (Incognito)
ممکن است افزونههای مرورگر یا کش خاصی باعث خطا شوند. باز کردن آدرس در مرورگر دیگر یا در پنجره ناشناس میتواند به تشخیص این موضوع کمک کند.
قدم چهارم : غیرفعالسازی افزونهها در وردپرس
با استفاده از FTP یا File Manager هاست:
۱- به مسیر `wp-content/plugins` بروید.
۲- نام پوشه تمامی افزونهها را موقتاً تغییر دهید.
۳- سایت را بارگذاری کنید. اگر خطا رفع شد، افزونه معیوب را شناسایی کرده و غیرفعال کنید.
قدم پنجم : بازنشانی تنظیمات پیوندهای یکتا
در پیشخوان وردپرس:
۱-به «تنظیمات ← پیوندهای یکتا» بروید.
۲- بدون تغییر، فقط روی «ذخیره تغییرات» کلیک کنید.
۳- این کار فایل `.htaccess` را مجدداً ایجاد میکند.
قدم ششم : بررسی فایل .htaccess
ممکن است پیکربندی نادرست در فایل `.htaccess` باعث بروز خطا شود.
- مراحل:
- فایل `.htaccess` را به `.htaccess_old` تغییر نام دهید.
- مجدد پیوندهای یکتا را ذخیره کنید تا فایل جدید ساخته شود.
- اگر خطا رفع شد، مشکل از نسخه قبلی فایل بوده است.
قدم هفتم : بررسی سایز کوکیها و header
در برخی موارد، کوکیها یا مقدارهای زیاد در header باعث رد شدن درخواست از سوی سرور میشوند.
مخصوصاً در مرورگر کروم، اگر عبارت زیر را ببینید:
“`
Request Header Or Cookie Too Large
“`
باید کوکی سایت مورد نظر را از مرورگر حذف کنید.
قدم هشتم : فعالسازی حالت دیباگ در وردپرس
در فایل `wp-config.php` کد زیر را فعال کنید:
php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
فایل `wp-content/debug.log` را بررسی کنید تا ببینید چه چیزی منجر به خطا شده است.
قدم نهم : بررسی گزارشهای سرور (Server Error Logs)
از طریق پنل هاست (مانند cPanel یا DirectAdmin):
- به بخش **Errors** یا **Logs** بروید.
- تاریخ و نوع خطا را بررسی کنید.
- پیامهای مرتبط با 400 را استخراج کرده و علتیابی کنید.
قدم دهم : استفاده از ابزارهای توسعهدهنده مرورگر
با باز کردن **Developer Tools** (کلید F12 یا کلیک راست > Inspect):
- در تب **Network** صفحه را رفرش کنید.
- درخواستی که منجر به کد 400 شده را بررسی کرده و محتوای Response را بخوانید.
قدم یازدهم : غیرفعال کردن CDN یا فایروال موقتاً
اگر از Cloudflare یا سرویس مشابه استفاده میکنید، برخی از قوانین فایروال ممکن است باعث خطای 400 شوند. موقتاً آن را غیرفعال کرده و بررسی کنید.
قدم دوازدهم : تماس با پشتیبانی هاست یا CDN
اگر هیچیک از موارد بالا نتیجه نداد، پشتیبانی هاست میتواند با دسترسی به لاگهای دقیق، منبع خطا را شناسایی کند. بهخصوص در سرورهایی با تنظیمات خاص امنیتی یا محدودیت Header.
نکات پیشگیرانه برای جلوگیری از خطای 400
- لینکسازی منطقی و صحیح در سایت داشته باشید.
- فرمها را بهدرستی اعتبارسنجی (Validation) کنید.
- از افزونههای معتبر استفاده کنید و آنها را بهروز نگه دارید.
- کوکیها و Sessionها را بهینه مدیریت کنید.
- از ابزارهای مانیتورینگ درخواستها استفاده کنید (مانند New Relic یا Query Monitor)
* Your browser sent a request that this server could not understand
webserver