URL の最大長は何文字?
ユーザーエージェントおよびサーバの実装に依存します。スキーム、ホスト名を含めて、255 バイト以下は安全です。メジャーなブラウザとサーバに限定すれば、2000 バイト程度までは使えるでしょう。
- SGML では 1024 文字
HTML のスーパーセットである SGML では、LITLEN=1024 文字とされています。
RFC2070 | URL の長さの制限って | HTML 4のSGML宣言 - HTML 4.01 では 65536 文字
HTML 4.01 では LITLEN=65536 文字です。 - HTTP では未定義、255 バイト以下を推奨
RFC2616 (HTTP/1.1) には、URL の長さに関する規定はありません。ただし、Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or プロキシ(proxy) implementations might not properly support these lengths.
と、255 バイト以下が推奨されています。
- Internet Explorer は 2083 バイト
URL の最大長が 2083 バイトです。
「URL に使用可能な文字数は最大 2,083 文字」
IE3.02 のころは 1KB 程度だったようです。 - Mozilla/Firefox は事実上無制限
少なくとも 2MB (200 万文字)は送信可能なことを確認しました(後述)。ソースコードは未確認ですが、事実上無制限と考えてよいでしょう。
ただし、あまりに長い URL は、アドレスバーが表示されなくなる、極端に動作が遅くなる、などの不具合があります。 - その他のブラウザ (Opera, NetFront など)
未確認 - Apache は 8177 バイト
Apache HTTP server では、HTTP リクエスト行の長さが LimitRequestLine を超えると、414 Request-URI Too Large エラーを返します。
LimitRequestLine のデフォルト値は 8190 バイトです。Apache 2.0 では 0 からDEFAULT_LIMIT_REQUEST_LINE (=8190)の間で設定可能です。Apache 2.2 では任意の値にセットできます。
通常のリクエスト行は
GET <url> HTTP/1.1
ですから、url 部分の最大長は 8177 バイトということになります。 - 実験
<html>
<form action=”show.php”>
<textarea name=”t” ></textarea>
<input type=”submit”>
</form>
</html>のようなフォームでデータを送信してみました。
Internet Explorer 6 + Apache 2.0 の場合
2083 バイトまでは送信可能です。それ以上は submit ボタンを押しても送信しなくなります。Firefox 1.5 + Apache 2.0 の場合
8177 バイトまでは送信可能です。それ以上は 414 Request-URI Too Large になります。Firefox 1.5 + Apache 2.2 の場合
LimitRequestLine 十分大きく設定すれば、十分長い URL を送信できます(2MB まで確認)。 - 備考
サーバのファイルシステムの最大文字長や、ドメインの長さなど、他の要因で制限される場合もあります。
ext2 のファイル名は 255 バイトまで
ドメイン名は 255 オクテットまで (RFC1034)