431 Request Header Fields Too Large

ヘッダーが大きすぎます。

使いどころ

大きすぎる Cookie がよくある原因です。

よくある原因と対処法

ヘッダーが大きすぎます。原因はほぼ例外なく Cookie です。大量のトラッキング Cookie、クライアント側に保存されたセッション、多数のクレームを持つ JWT を Cookie に入れている、などです。localhost では、Cookie はポートを区別しないため、これまでに動かしたすべてのアプリの Cookie が溜まっていきます。サイトの Cookie を削除すればたいていすぐに直り、それによって原因の特定も裏付けられます。

Node.js はヘッダーが 16 KB を超えると 431 を返し、Vite や Next.js などの開発サーバーでよく問題になります。--max-http-header-size で上限を引き上げられます。nginx と Apache は同じ問題に 400 で応答します。本当の解決策はヘッダーを小さくすることです。Cookie にはセッション ID だけを入れ、Path と Domain の値を絞って Cookie の範囲を限定し、古い Cookie は削除しましょう。

クライアントエラー (4xx)

4xx はクライアントエラーです。リクエスト自体が誤っている、認証されていない、または存在しないものを指しています。同じリクエストを再試行しても解決しません。

レスポンスでの表示

HTTP/1.1 431 Request Header Fields Too Large

返し方

Node.js / Expressres.status(431).end()
Python / Flaskreturn '', 431
nginxreturn 431;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く