2012-02-20 102 views

回答

2

尽管HTTP协议的规范没有规定任何最大长度,但实际的限制是由网络浏览器和服务器软件强加的。

的Microsoft Internet Explorer(浏览器)

微软指出一个URL的在的Internet Explorer的最大长度为2083个字符,在URL的路径部分不超过2,048个字符。在我的测试中,尝试使用比这更长的URL会在Internet Explorer中产生一个明确的错误消息。

火狐(浏览器)

后65536个字符,在地址栏不再显示在Windows的Firefox 1.5.x.网址但是,更长的网址将起作用。我在100,000个字符后停止测试。

Safari浏览器(浏览器)

至少80,000个字符会工作。我在80,000个字符后停止测试。

歌剧院(浏览器)

至少有19万个字符会工作。我在190,000个字符后停止了测试。用于Windows的Opera 9继续在位置栏中显示完全可编辑,可复制和可粘贴的URL,即使在190,000个字符处也是如此。

的Apache(服务器)

我早期的尝试来衡量撞上了约4000个字符的服务器URL长度的限制网页浏览器最大URL长度,之后阿帕奇产生了“413实体过大”错误。我使用了目前最新的Red Hat Enterprise Linux 4中的Apache版本。官方的Apache文档仅提到了请求中单个字段的8,192字节限制。

Microsoft Internet信息服务器

默认限制为16,384个字符(是的,微软的Web服务器比微软的网络浏览器接受较长的URL)。这是可配置的。 Perl HTTP :: Daemon(服务器)

最多可以使用8,000个字节。使用Perl的HTTP :: Daemon模块构建Web应用程序服务器的用户将在所有HTTP请求标头的组合大小上遇到16,384字节的限制。这不包括POST方法表单数据,文件上传等,但它包含URL。实际上,当URL长度超过8,000个字符时,会导致413错误。这个限制可以很容易地删除。在Daemon.pm中查找所有出现的16x1024,并用更大的值替换它们。当然,这确实会增加您遭受拒绝服务攻击的风险。

建议

超长URL通常是一个错误。超过2000个字符的网址在最流行的网络浏览器中无法使用。如果您打算让您的网站为大多数互联网用户工作,请不要使用它们。

参考文献:http://www.boutell.com/newfaq/misc/urllength.html