431 Request Header Fields Too Large
사용법
431 Request Header Fields Too Large 상태 코드는 HTTP 헤더에 지정된 데이터가 너무 많아 서버가 HTTP 요청 처리를 거부하고 있음을 나타냅니다.
서버에 따라 이는 HTTP 헤더 전체의 합산 길이를 뜻하기도 하고 특정 헤더의 길이를 뜻하기도 합니다. 어느 쪽이든 클라이언트는 하나 이상의 HTTP 헤더를 제거하고 요청을 다시 시도할 수 있습니다. HTTP 헤더의 양을 줄이는 한 가지 방법은 전송되는 쿠키를 줄이거나 덜어내는 것입니다.
SEO 영향
Google 같은 검색 엔진은 431 응답 상태를 가진 URL을 색인하지 않습니다. 이전에 색인되었다가 이 상태 코드를 반환하는 URL은 검색 결과에서 제거됩니다.
예시
클라이언트가 리소스를 요청하지만, 큰 쿠키 두 개의 합이 서버가 HTTP 헤더에 설정한 최대 한도를 초과하므로 서버는 431 Request Header Fields Too Large로 응답합니다.
요청
GET /tech-news HTTP/1.1
Host: example.com
Cookie: first_cookie=<very_long>; second_cookie=<long_again>
응답
HTTP/1.1 431 Request Header Fields Too Large
Content-Type: text/html
Content-Length: 183
<html>
<head>
<title>Request Headers Too Long</title>
</head>
<body>
<p>The request headers are too long.
Try retrying without cookies.</p>
</body>
</html>
해결 방법
브라우저에서 해당 도메인의 쿠키를 지우세요. 쿠키 누적이 가장 빈번한 원인입니다. 서드파티 스크립트, 분석 태그, 마케팅 픽셀이 방문할 때마다 쿠키를 설정하며, 그 합산 크기가 결국 서버 한도를 넘습니다. 브라우저 쿠키를 전부 지우기 전에 먼저 해당 사이트의 쿠키만 지워 보세요.
요청과 함께 보내는 커스텀 헤더 값을 줄이세요. 긴 인가 토큰, 지나치게 큰 X-Custom-* 헤더, 헤더에 끼워 넣은 URL 인코딩 쿼리 매개변수가 모두 전체 크기에 기여합니다.
서버 측에서는 헤더 버퍼 한도를 늘리세요.
사이트 전반의 쿠키 사용을 감사하세요. 도메인당 설정되는 쿠키 수를 제한하고, SameSite·Path·Domain 속성을 사용해 쿠키가 필요하지 않은 서브도메인과 경로로 퍼지지 않도록 하세요. 모든 요청마다 함께 전송될 필요가 없는 데이터는 서버 측 저장소나 localStorage로 옮기세요.
서버 한도를 32 KB 이상으로 올리면 서비스 거부 위험이 생깁니다. 정상 트래픽을 감당할 수 있을 만큼만 한도를 올리고, 이 변경과 함께 요청 크기 모니터링을 병행하세요.
Chrome과 431 오류
도메인에 누적된 쿠키가 요청 헤더를 서버 한도 너머로 밀어 올리면 Chrome은 “Bad Request - Request Header Field Too Long” 또는 “Bad message 431”을 표시합니다. Chrome 설정에서 해당 사이트의 쿠키를 지우면(설정 > 개인 정보 보호 > 쿠키 > 모든 사이트 데이터 보기) 다른 사이트에 영향을 주지 않고 오류가 즉시 해소됩니다.
코드 참고
.NET
HttpStatusCode.RequestHeaderFieldsTooLarge
Rust
http::StatusCode::REQUEST_HEADER_FIELDS_TOO_LARGE
Rails
:request_header_fields_too_large
Go
http.StatusRequestHeaderFieldsTooLarge
Symfony
Response::HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
Python3.5+
http.HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_REQUEST_HEADER_FIELDS_TOO_LARGE
Angular
@angular/common/http/HttpStatusCode.RequestHeaderFieldsTooLarge