コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

2024年7月時点のRFCの仕様を鑑みると、URLの文字数は8000文字まで対応されている

過去に書いた記事へのupdateの意味も込めて

出典

RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

どのようなことが定義されているのか

RFC7230では以下のようなことが記載されている。

Various ad hoc limitations on request-line length are found in practice. It is RECOMMENDED that all HTTP senders and recipients support, at a minimum, request-line lengths of 8000 octets.(リクエストラインの長さに関するさまざまなアドホック制限が実際に見られます。すべてのHTTP送信者と受信者が、少なくとも8000オクテットのリクエストライン長をサポートすることが推奨されます。) - RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing 日本語訳

リクエストライン(リクエスト行)には8000文字程度扱えることが推奨されるということになっている。このリクエストラインとは何かというと、HTTPリクエストを送るときの一行目にあたる情報。

例としてcurlを使って https://example.com/index.html/ にアクセスするリクエストを送る場合は以下の内容がリクエストのテキストになる。

GET /index.html HTTP/2
Host: example.com
user-agent: curl/7.84.0
accept: */*

上記の GET /index.html HTTP/2 がリクエストラインにあたる。

このリクエストラインが8000文字程度のサポートを推奨しているので、ホスト部を覗く文字列の長さもその分だけ表現可能ため、8000文字前後はURLの文字列の長さとして許容できる、という見解になる。

関連リンク