過去に書いた記事への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の文字列の長さとして許容できる、という見解になる。