ヘッダーが大きすぎます。
使いどころ
大きすぎる 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 / Express | res.status(431).end() |
|---|---|
| Python / Flask | return '', 431 |
| nginx | return 431; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/