HTTP / Status 431 Request Header Fields Too Large

http 431 request header fields too large solution guide
20 آبان 1403

مشکل HTTP Status 431 چیست؟

گاهی اوقات وقتی در حال توسعه یا استفاده از یک وب اپلیکیشن هستید، ممکن است با خطای HTTP 431 Request Header Fields Too Large مواجه شوید. این خطا نشان‌دهنده این است که هدرهای درخواست HTTP (مانند کوکی‌ها و سایر متادیتا) به حدی بزرگ هستند که سرور نمی‌تواند آن‌ها را پردازش کند. در واقع، سرور بخاطر محدودیت‌هایش نمی‌تواند درخواست‌هایی با هدرهای بیش از حد بزرگ را قبول کند.

چرا این خطا اتفاق می‌افتد؟

یکی از رایج‌ترین دلایل وقوع این خطا، استفاده از کوکی‌های بسیار بزرگ یا تعداد زیادی کوکی است. به عنوان مثال، اگر سایت شما مقادیر زیادی داده را در کوکی‌ها ذخیره کند، ممکن است به زودی با این خطا مواجه شوید. همچنین، فاکتورهای دیگری مانند استفاده نادرست از هدرها یا نصب افزونه‌های مرورگر که مقادیر اضافی به هدر اضافه می‌کنند نیز می‌تواند باعث بروز این مشکل شود.

چگونه می‌توان این مشکل را حل کرد؟

برای حل این خطا، ابتدا لازم است هدرهای درخواست خود را محدود و بهینه‌سازی کنید. سعی کنید تا جای ممکن داده‌ها را در هدرها ذخیره نکنید یا آن‌ها را فشرده‌سازی کنید. راه ساده دیگر این است که از حجم و تعداد کوکی‌ها بکاهید یا آنها را بهینه‌سازی کنید. در برخی موارد، می‌توانید تنظیمات سرور را طوری تنظیم کنید که اندازه بیشتری را قبول کند، اما این باید با احتیاط و جهت اهداف خاص انجام شود.

نمونه کد تنظیم سایز هدر در سرور Nginx


http {
    server {
        large_client_header_buffers 4 16k;
    }
}

توضیح خط به خط کد

http {
این بلاک به منظور تعریف تنظیمات عمومی HTTP سرور Nginx استفاده می‌شود.
server {
این بلاک، تنظیمات یک سرور خاص را تعریف می‌کند که درون بلاک HTTP تعریف شده است.
large_client_header_buffers 4 16k;
این خط تعداد و اندازه بافرهای هدر کلاینت بزرگ را تعیین می‌کند. عدد 4 به معنی چهار بافر و 16k اندازه هر بافر به کیلوبایت می‌باشد.
}
پایان بلاک سرور.
}
پایان بلاک HTTP.

به یاد داشته باشید که تغییرات تنظیمات سرور باید با احتیاط و درک کامل از وضعیت انجام شود. افزایش اندازه هدرها ممکن است عواقب امنیتی داشته باشد.

سوالات متداول

؟

چرا با خطای HTTP 431 مواجه می‌شویم؟

؟

چگونه می‌توان اندازه هدرهای HTTP را کاهش داد؟

؟

آیا می‌توانم تنظیمات سرور را تغییر دهم تا این خطا رفع شود؟