网址中允许使用方括号吗?

URL中的方括号是否允许?

我注意到Apache commons HttpClient(3.0.1)抛出一个IOException,wget和Firefox但是接受方括号。

网址示例:

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

我的HTTP客户端遇到这样的URL,但我不确定是要修补代码还是抛出异常(实际上应该是这样)。


RFC 3986指出

通过将IP字面值封入方括号(“[”和“]”)来区分由Internet协议字面地址版本6 [RFC3513]或更高版本标识的主机。 这是URI语法中允许使用方括号字符的唯一地方。

所以你不应该在理论上看到这样的URI,因为它们应该到达编码。


我知道这个问题有点老,但我只是想说明PHP使用括号来传递URL中的数组。

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

在这种情况下, $_GET['bar']将包含array(1, 2, 3)


任何接受URL并且在特殊字符引入时不会引发异常的浏览器或支持Web的软件几乎可以保证对后面的特殊字符进行编码。 大括号,方括号,空格等都有特殊的编码方式来表示它们,以免产生冲突。 根据以前的答案,处理这些问题的最安全的方法是在将它们交付给尝试解析URL的内容之前进行网址编码。

链接地址: http://www.djcxy.com/p/1889.html

上一篇: Are square brackets permitted in URLs?

下一篇: Why is URN one of more popular formats used to uniquely identify the resource?