[10] [[URL]] の長さは理論上は無制限ですが、現実には制限があります。 * HTTP における URL の長さの制限 [3] [[HTTP]] で扱う [[URL]] に関しては、仕様上は長さの制限が設けられていません。 [4] [[鯖]]は提供する[[資源]]の [[URL]] を扱うことができなければ[['''なりません''']]。 [CODE(HTTP)@en[[[GET]]]] を使った[[フォーム]]を提供していて、 それがいくらでも長い [[URL]] を生成し得るのであれば、それを扱うことができる[['''べきです''']]。 [SRC[>>5]] ;; [6] [[鯖]]は自分が何を提供し何を提供しないか自ら決められるわけですから、 長い [[URL]] の[[資源]]は提供しないと決めても何ら問題なく (というか外部からは観測不能だし[[相互運用性]]にはまったく寄与しない)、 >>4 のようなぱっとしない MUST 要件になっているのでしょうね。しかし自ら決められるといっても、 [CODE(HTTP)@en[[[GET]]]] [[フォーム]]については例外で、 [[URL]] がユーザーの入力によって決まるので、 そこは[[相互運用性]]に影響するものであり、 SHOULD 要件で例外として補足しているのでしょうな。 [7] [[鯖]]は、 [[URL]] が扱える長さの上限を超えていれば、 [CODE(HTTP)[[['''414''']]]] を返す[['''べきです''']]。 [SRC[>>5]] [8] 古い[[クライアント]]や[[串]]は255バイトよりも長い [[URL]] をうまく扱えないので、 [[鯖]]は注意したほうが[RUBYB[よいです]@en[ought to]]。 [SRC[>>5]] [9] でもこれ、 >>6 のようなややこしいことを考えずとも、 [[鯖]]と[[串]]は任意の長さの [[URL]] を扱えなければならず、通常通り処理できなければ [CODE(HTTP)[[['''414''']]]] を返すべきである、と規定するだけでいい気がするのですがね。 ** 仕様書 - [11] [DEL[[CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ]] - [5] [CITE@en[RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]] ;; [12] [[RFC 1945]] にはありませんでした。 * WAP における URL の長さの制限 [1] [[WAE利用者エージェント]]および [[WAP串]]は、最低1024オクテットの [[URI]] を扱えなければなりません: 7.2 * [CODE(JS)@en[Location]] オブジェクトにおける長さ制限 [2] [CITE[URL の GET での長さの制約 - 8時40分が超えられない - subtech]] ([TIME[2009-03-31 08:40:19 +09:00]] 版)