当前位置:  开发笔记 > 运维 > 正文

网址中是否允许使用方括号?

如何解决《网址中是否允许使用方括号?》经验,为你挑选了3个好方法。

是否允许使用URL中的方括号?

我注意到Apache commons HttpClient(3.0.1)抛出IOException,wget和Firefox接受方括号.

网址示例:

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

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



1> Justin Corma..:

RFC 3986声明

由Internet协议文字地址版本6 [RFC3513]或更高版本标识的主机通过将IP文本括在方括号("["和"]")中来区分.这是URI语法中唯一允许使用方括号字符的位置.

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



2> MM...:

我知道这个问题有点陈旧,但我只想注意PHP使用括号来传递URL中的数组.

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

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


正确,但是当浏览器没有自动编码时,它们仍然应该被编码.PHP仍将正确解释括号,它自己的http_build_query()函数也会对它们进行编码.

3> 小智..:

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

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有