خطای ۴۰۰ Bad Request چیست؟
خطای ۴۰۰ Bad Request یکی از خطاهای رایج پروتکل HTTP است که نشان میدهد سرور درخواست ارسالشده از سمت کاربر یا مرورگر را نمیتواند پردازش کند، زیرا درخواست دارای ساختار (syntax) صحیحی نیست یا اطلاعات ناقص دارد. برخلاف خطاهای سری ۵۰۰ که مشکل از سرور است، در خطای ۴۰۰ مشکل از سمت کلاینت (مرورگر یا کاربر) است. این خطا در تمام وبسرورها از جمله Apache، Nginx و LiteSpeed ممکن است رخ دهد.
دلایل رایج بروز خطای ۴۰۰ Bad Request
خطای Bad Request دلایل متعددی دارد. شناخت علت دقیق، سریعترین مسیر برای رفع آن است:
۱. کوکیهای خراب یا منقضی
یکی از شایعترین دلایل بروز خطای ۴۰۰، کوکیهای (Cookies) خراب یا منقضیشده مرتبط با سایت است. زمانی که کوکیهای ذخیرهشده در مرورگر با اطلاعات سمت سرور مغایرت داشته باشند، سرور درخواست را رد میکند.
۲. URL نادرست یا دارای کاراکتر غیرمجاز
وارد کردن آدرس URL ناقص یا حاوی کاراکترهای خاص که به درستی encode نشده باشند (مثل فاصله، کاراکترهای فارسی بدون encoding) میتواند این خطا را ایجاد کند. اگر ساختار URL سایت شما درست تنظیم نشده باشد، احتمال بروز این خطا بالاتر است.
۳. حجم بیش از حد هدر درخواست
برخی سرورها محدودیت اندازه برای هدرهای HTTP دارند. اگر هدر درخواست (مثلاً به دلیل کوکیهای زیاد) از حد مجاز بزرگتر باشد، سرور آن را رد میکند.
۴. Cache مرورگر خراب
گاهی فایلهای کش مرورگر خراب شده و اطلاعات قدیمی یا ناقص به سرور ارسال میشود که باعث خطای ۴۰۰ میشود.
۵. استفاده نادرست از دستور curl
در مواقعی که توسعهدهندگان از دستور curl برای ارسال درخواست HTTP استفاده میکنند و فرمت درخواست اشتباه باشد (مثلاً فراموش کردن Content-Type هدر یا ساختار JSON نادرست) این خطا ظاهر میشود.
۶. آپلود فایل با حجم بیش از حد مجاز
اگر کاربری فایلی با حجم بیش از حد تعریفشده در تنظیمات سرور یا وردپرس آپلود کند، سرور درخواست را با خطای ۴۰۰ رد میکند.
روشهای رفع خطای ۴۰۰ Bad Request
روش اول: پاک کردن کش و کوکی مرورگر
سادهترین و اولترین کاری که باید انجام دهید، پاک کردن کش و کوکیهای مرورگر است. در مرورگر کروم:
- کلیدهای
Ctrl + Shift + Deleteرا بزنید. - بازه زمانی را روی «همه موارد» تنظیم کنید.
- گزینههای «Cookies» و «Cached images and files» را تیک بزنید.
- روی «Clear data» کلیک کنید.
- صفحه را دوباره باز کنید.
برای راهنمای کاملتر، مقاله آموزش خالی کردن کش مرورگر کروم را مطالعه کنید.
روش دوم: بررسی و اصلاح URL
URL وارد شده را به دقت بررسی کنید:
- مطمئن شوید URL فاصله یا کاراکتر خاص بدون encoding ندارد.
- اگر URL را کپیپیست کردهاید، دوباره آن را دستی تایپ کنید.
- پروتکل را بررسی کنید —
http://باhttps://اشتباه نشده باشد.
روش سوم: بررسی تنظیمات سرور
اگر خطا برای همه کاربران رخ میدهد، مشکل از سمت سرور است. در این صورت باید تنظیمات وبسرور را بررسی کنید. مثلاً در Nginx میتوان با تنظیم large_client_header_buffers محدودیت اندازه هدر را افزایش داد:
# در فایل nginx.conf
http {
large_client_header_buffers 4 16k;
client_header_buffer_size 4k;
}
در Apache با ویرایش فایل httpd.conf یا .htaccess میتوان این تنظیمات را اعمال کرد.
روش چهارم: بررسی تنظیمات وردپرس
اگر سایت شما روی هاست وردپرس اجرا میشود و خطای ۴۰۰ در صفحه آپلود یا فرمها رخ میدهد:
- محدودیت حجم آپلود را در
php.iniیاwp-config.phpافزایش دهید. - افزونههای امنیتی مثل Wordfence را بررسی کنید — گاهی قوانین فایروال آنها باعث بلاک شدن درخواستها میشود.
- فایل
.htaccessوردپرس را با نسخه پیشفرض جایگزین کنید.
روش پنجم: بررسی درخواستهای API و curl
اگر به عنوان توسعهدهنده با این خطا مواجه شدهاید، موارد زیر را بررسی کنید:
# نمونه درخواست curl صحیح با JSON
curl -X POST https://example.com/api/data \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"key": "value"}'
- هدر
Content-Typeرا حتماً تنظیم کنید. - ساختار JSON را با ابزاری مثل JSONLint اعتبارسنجی کنید.
- از encode صحیح کاراکترهای خاص در URL مطمئن شوید.
تفاوت خطای ۴۰۰ با سایر خطاهای HTTP
برای درک بهتر، مقایسه خطای ۴۰۰ با خطاهای مشابه مفید است:
| کد خطا | نام | علت |
|---|---|---|
| ۴۰۰ | Bad Request | درخواست نادرست از سمت کلاینت |
| ۴۰۴ | Not Found | صفحه درخواستی پیدا نشد |
| ۵۰۰ | Internal Server Error | خطای داخلی سرور |
| ۵۰۲ | Bad Gateway | پاسخ نامعتبر از upstream |
| ۵۰۳ | Service Unavailable | سرور موقتاً در دسترس نیست |
جمعبندی
خطای ۴۰۰ Bad Request در اغلب موارد با پاک کردن کش و کوکی مرورگر یا اصلاح URL برطرف میشود. اگر خطا برای همه کاربران تکرار میشود، مشکل از تنظیمات سرور یا وردپرس است و باید فایلهای تنظیماتی مثل .htaccess یا php.ini را بررسی کنید. انتخاب یک هاست وردپرس حرفهای با تنظیمات بهینه میتواند از بروز بسیاری از این خطاها پیشگیری کند.
⚡ هاست وردپرس بدون خطا
با هاست وردپرس میهن هاستینگ، تنظیمات PHP و سرور از پیش بهینه شدهاند. کمتر با خطاهای HTTP مواجه شوید و از پشتیبانی ۲۴ ساعته بهرهمند شوید.
