[419] 414
(URI Too Long)
は、
要求URLが長すぎるため処理できないことを表す状態符号です。
[417] 414
は、要求対象が長くて鯖が解釈したくないため要求を拒絶したことを示します
>>416。
[6]
厳密に言えば要求対象と要求URLは異なるものですが (414
を送る、送らないの判定に関して言えば大差はありません。
サーバーは、
要求対象が長すぎると検知したときでも、
要求URLが長すぎると判断したときでも、
どちらでも
414
を送ることが出来ます。
[7]
長い、短いの判断は完全にサーバーに委ねられていて、
一定している必要もありません。例えば同じ URL
を何回か送信してそのたびに正常処理と 414
のどちらかが返ってきても構いませんし (そんな必要があるか、
それが良い設計であるかは別問題ですが)、
同じ起源サーバー上のある path では 414
になる長さが他の path のとき正常処理になっても構いません。
414
になった要求URLより長いものは 414
が返ってくる可能性が高いという一般論での予測は十分可能です。
が、汎用の HTTPクライアントライブラリーならそれを前提にした実装をしてはいけません。[405] 構文解析したい URI の長さを超える要求対象を受信した鯖は、
414
を返さなければなりません >>3。
[420] 仕様上は明確な上限値があるわけではなく、サーバーが決めることができます。 長さ制限については要求対象, URLの長さの項を参照してください。
[1]
理論上はクライアントは 414
を受信したら要求URL
を短縮して再度要求を作り直して送信することができます。
しかし現実的には要求URL
に冗長な情報があって、それを削って再試行できることがわかっているような状況はさほど多くありません。
特定の応用の専用のクライアントで、しかも省略可能な情報を送信するかなり特殊な状況を除けば、
414
を受信したらその要求は完全に失敗したものとして扱うことになります。
POST
と応答本体 (application/x-www-form-urlencoded
や multipart/form-data
) を使うのが定石となっています。
HTTP としては GET
や POST
で要求URLで引数を指定するのと
POST
で応答本体で引数を指定するのは異なるものですが、
多くのWebアプリケーション用ライブラリーは同一視して透過的に扱えるようにしています。
[4]
Webブラウザーの navigate で 414
を受信したときは、 400
など他の 4xx
の応答と同様に、
普通の一般的な応答として表示などをすることになります。
The server is refusing to service the request because the Request-URI is longer than the server is willing to interpret. This rare condition is only likely to occur when a client has improperly converted a POST request to a GET request with long query information, when the client has descended into a
URLURI "black hole" of redirection (e.g., a redirectedURLURI prefix that points to a suffix of itself), or when the server is under attack by a client attempting to exploit security holes present in some servers using fixed-length buffers for reading or manipulating the Request-URI.
サーバーは、その解釈する意思がある長さよりも Request-URI
が長いために、要求をサービスするのを拒否しています。
この稀な状態は、クライアントが不適切にも POST
要求を長い問合せ情報をつけた
GET
要求に変換しているときや、
クライアントが URI のリダイレクト「ブラック・ホール」に落下してゆくとき
(例えば、リダイレクトされる URI の接頭辞が自身の接尾辞を指示しているとか)、
或いは固定長バッファーを Request-URI
を読んだり処理したりするのに使っている幾つかのサーバーにあるセキュリティー・ホールを突いて攻撃しているクライアントにサーバーが攻撃されている時に限って起きることでしょう。
414
応答か否かによって完全に知ることは出来ませんし、 そのような予測を期待されてもいません。