是否允许使用URL中的方括号?
我注意到Apache commons HttpClient(3.0.1)抛出IOException,wget和Firefox接受方括号.
网址示例:
http://example.com/path/to/file[3].html
我的HTTP客户端遇到这样的URL,但我不确定是要修补代码还是抛出异常(实际应该是这样).
RFC 3986声明
由Internet协议文字地址版本6 [RFC3513]或更高版本标识的主机通过将IP文本括在方括号("["和"]")中来区分.这是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编码,然后再将它们交给试图解析URL的东西.