50

URLの角かっこは使用できますか?

Apache commons HttpClient(3.0.1)がIOExceptionをスローすることに気付きましたが、wgetとFirefoxは角かっこを受け入れます。

URLの例:

http://example.com/path/to/file[3].html

私のHTTPクライアントはそのようなURLに遭遇しますが、コードにパッチを適用するか、例外をスローするか(実際にはそうあるべきです)がわかりません。

4

10 に答える 10

56

RFC 3986の状態

バージョン 6 [RFC3513] 以降のインターネット プロトコル リテラル アドレスで識別されるホストは、IP リテラルを角括弧 ("[" および "]") で囲むことによって区別されます。これは、URI 構文で角括弧文字が許可される唯一の場所です。

したがって、そのような URI はエンコードされた状態で到着するはずなので、理論上は実際に目にすることはないはずです。

于 2009-06-19T07:23:04.400 に答える
15

この質問は少し古いことは知っていますが、PHPは角かっこを使用してURLの配列を渡すことに注意したいと思います。

http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3

この場合$_GET['bar']、が含まれますarray(1, 2, 3)

于 2009-11-11T21:33:17.913 に答える
5

パス名で許可されていない文字は、#と?だけです。彼らは道の終わりを意味するので。

uri rfcには、決定的な答えがあります。

http://www.ietf.org/rfc/rfc1738.txt

安全ではない:

キャラクターはいくつかの理由で安全ではない可能性があります。URLが文字起こしまたは植字されたり、ワードプロセッシングプログラムの処理を受けたりすると、重要なスペースが消えたり、重要でないスペースが導入されたりする可能性があるため、スペース文字は安全ではありません。文字「<」および「>」は、フリーテキストのURLの区切り文字として使用されるため、安全ではありません。一部のシステムでは、引用符( "" ")を使用してURLを区切ります。文字"# "は安全ではなく、ワールドワイドウェブやその他のシステムでフラグメント/アンカーからURLを区切るために使用されるため、常にエンコードする必要があります。それに続く可能性のある識別子。文字「%」は、他の文字のエンコードに使用されるため、安全ではありません。ゲートウェイや他のトランスポートエージェントがそのような文字を変更することがあることが知られているため、他の文字は安全ではありません。これらの文字は、「{」、「}」、「|」、「\」、「^」、「〜」、「[」、「]」、および「`」です。

安全でない文字はすべて、常にURL内にエンコードする必要があります。たとえば、通常はフラグメント識別子やアンカー識別子を処理しないシステムでも、文字「#」をURL内にエンコードする必要があるため、URLをそれらを使用する別のシステムにコピーする場合は、URLを変更する必要はありません。 URLエンコーディング。

答えは、それらは16進エンコードされるべきであるということですが、postelの法則を知っていると、ほとんどのものはそれらを逐語的に受け入れます。

于 2008-09-02T20:39:34.467 に答える
5

URLを受け入れ、特殊文字が導入されたときに例外をスローしないブラウザまたはWeb対応ソフトウェアは、ほとんどの場合、特殊文字を舞台裏でエンコードすることが保証されています。中括弧、角括弧、スペースなどはすべて、競合が発生しないように、それらを表すための特別なエンコードされた方法を備えています。前の回答と同様に、これらに対処する最も安全な方法は、URLを解決しようとするものに渡す前にURLエンコードすることです。

于 2008-09-02T20:42:28.827 に答える
2

HttpClient commons クラスを使用するには、org.apache.commons.httpclient.util.URIUtil クラス、具体的には encode() メソッドを調べる必要があります。これを使用して、取得を試みる前に URL を URI エンコードします。

于 2008-09-15T20:24:53.080 に答える
2

StackOverflow はそれらをエンコードしていないようです:

https://stackoverflow.com/search?q=square+brackets+[url]

于 2010-06-14T12:47:54.783 に答える
1

これらはすべてのWebサーバーでサポートされているわけではないため、URLエンコードするのが最適です。時には、基準があっても、誰もがそれに従うわけではありません。

于 2008-09-02T20:36:36.113 に答える
1

URL仕様によると、角かっこは有効なURL文字ではありません。

関連するスニペットは次のとおりです。

「国別」および「句読点」の文字はどのプロダクションにも表示されないため、URLに表示されない場合があります。
全国{| } | vline | [| ] | \ | ^ | 〜
句読点<| >>

于 2008-09-02T20:41:14.137 に答える
1

角かっこは安全ではないと考えられていますが、ほとんどのブラウザは正しく解析します。角かっこを他の文字に置き換える方が良いとは言いました。

于 2016-08-01T22:25:04.980 に答える