414

状態符号 414 (HTTP)

[419] 414 (URI Too Long) は要求URLが長すぎるため処理できないことを表す状態符号です。

仕様書

意味

[417] 414 は、要求対象が長くてが解釈したくないため要求拒絶したことを示します >>416

文脈

[405] 構文解析したい URI の長さを超える要求対象を受信したは、 414 を返さなければなりません >>3

[420] 長さ制限については要求対象の項も参照してください。

処理モデル

[418] 414キャッシュ可能です >>416

歴史

[2] RFC 2068 & 2616 (HTTP/1.1) 10.4.15 414 Request-URI Too Long

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 URL URI "black hole" of redirection (e.g., a redirected URL URI 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 を読んだり処理したりするのに使っている幾つかのサーバーにあるセキュリティー・ホールを突いて攻撃しているクライアントにサーバーが攻撃されている時に限って起きることでしょう。

メモ

[1] URI の長さには本来制限はありません。 HTTP においても、処理系的にやむを得ない場合を除いて任意の長さを扱えるようにするべきだとどっか他の章に書いてあったと思います。

現実には、 WWWブラウザで一定長までしか扱えないのがよく使われていますし、 サーバー側にしてもファイル・システムに写像しているのならファイル・システム側のファイル名の長さ制限に引っかかることが考えられます。 (但し、ファイル・システムの制限ならサーバー側のどうでも良い事情ですから、隠匿して 404 でも送っておくのが筋でしょう。)

[4] URLの長さも参照。