WebブラウザでWebページのURLを誤入力していた時に、偶然にもこれに行き当たりました
なぜ http://example.com/%
を訪問すると、HTTP 400 Bad Request エラーがスローされるのでしょうか?サーバはパーセント記号の後や前に何か他のものを期待しているのでしょうか?
ApacheやNginxサーバでも発生するようです
(サーバ: cloudflare-nginx) https://superuser.com/%
(サーバ: Apache) http://mozilla.org/%
22 iglvzx 2014-05-28
Short answer
RFC 3986 にあるように、URI の構文では、16進数の2桁の文字は有効ではないので、16進数の後に意味のある2桁の数字を続けなければなりません
Long answer
取得したHTTPのステータスコードは4xx
クラスに属します
4xx: Client Error - The request contains bad syntax or cannot be fulfilled
特に、コード400
は、Internet Engineering Task Force (IETF)のRFC 2616で定義されています
10.4.1 400 Bad Request
リクエストは構文が正しくないためにサーバーに理解されなかった。クライアントは修正せずにリクエストを繰り返すべきではない[SHOULD NOT]
ウィキペディア(太字強調の私)を引用します
URIで許可される文字は予約済みまたは予約されていない文字(またはパーセントエンコーディングの一部としてのパーセント文字)である
リテラル %
シンボルを挿入したい場合は、そのパーセンテージでエンコードされた表現を使用する必要があります。%25
Further reading
33 and31415 2014-05-28
パーセント記号は、通常はURLでサポートされていない文字を挿入するためのものです。例えば %20 はスペースと同じです
9 LPChip 2014-05-28