431 Request Header Fields Too Large(RFC 6585)は、ヘッダーフィールドの 1 つ、またはすべてのヘッダーの合計が大きすぎるため、サーバーがリクエストの処理を拒否していることを示します。クライアントは、ヘッダーのサイズを減らしてから再試行できます。
よくある原因は Cookie です。サイトとそのサブドメインが Cookie を次々と設定した結果、Cookie ヘッダーがサーバーの上限を超えてしまいます。非常に長い Referer の URL や、大きな認証トークンが原因になることもあります。たとえば Node.js はヘッダーが上限を超えると 431 を返し、開発者は localhost でよくこれに遭遇します。多数のローカルプロジェクトの Cookie がたまっていくためです。
431 を使わないサーバーもあります。たとえば nginx は、代わりに「Request Header Or Cookie Too Large」というメッセージ付きの 400 Bad Request を返します。
レスポンス例
HTTP
HTTP/1.1 431 Request Header Fields Too Large
Connection: close SEO とリダイレクトチェック
クローラーは Cookie なしの小さなヘッダーを送るため、431 を引き起こすことはほとんどありません。リダイレクトチェックで 431 が返った場合は、追加したカスタムヘッダーや Cookie のサイズを減らしてください。
よくある原因と主な用途
- ドメインとそのサブドメインの Cookie がたまっている場合。Cookie を削除するか、設定する Cookie の数とサイズを減らしてください。
- 大きな JWT やその他の認証ヘッダーを使っている場合。
- 巨大なクエリ文字列を持つ URL によって、
Refererヘッダーが非常に長くなっている場合。 - Node.js サーバー(
--max-http-header-size)、プロキシ、ロードバランサーのヘッダーサイズの上限が低い場合。