查看文章
 
HTTP URL 最长问题
2007年07月13日 星期五 10:58
以前编程总以为,URL最长是256个字符,但是现实中Google和taobao 的URL都非常长,长到看不到尽头.
所以上网找了找.

这个问题和浏览器服务器都有关系.
原文的地址:http://developers.sun.com.cn/blog/yutoujava/entry/6

事实上,如果希望在提交HTTP请求的同时附带上长长的信息,应该使用HTTP POST方法,而不是HTTP GET(也就是通常将信息放在URL中)。但是,构建HTTP POST方法要比HTTP GET麻烦,灵活性也差,所以很多Web开发设计人员选择了这种带有长长尾巴的URL方式。

那么HTTP URL到底有限制吗,限制是多少呢?事实上一个URL的长度限制可能在客户端(浏览器)和服务器端都存在。浏览器端的限制会根据浏览器的不同而不同,在 Windows上,Opera对URL的限制是4K左右,IE是在2K左右。FireFox比较大,我做过测试它的限制应该>10K。如果超出了限 制,浏览器就会截取部分,或者干脆拒绝发送这个超长的请求。

而在服务器端,每个处理进程和线程都会事先准备好读取请求数据的缓存,为了节约内存,这个缓存通常不会太大。如果服务器发现超过处理缓存的请求,应 该会返回414的错误代号(Request-URI Too Long)。通常来说在服务器的配置中会有参数来调整这个缓存的大小。例如在Sun JES Application Server中可以调整HTTP服务的缓冲区长度来实现。如下图:

根据朋友的要求,测试了一个长度为10K的URL,在FireFox中,通过服务器端的设置(将HTTP服务的缓冲区长度调整到12K),能够正确 返回结果。而在IE中没有任何返回结果。在服务器端运行snoop命令监控每一个网络包,发现超长的请求根本没有发到服务器端,在IE浏览器中就拒绝了。


类别:Java| |分享到i贴吧|浏览(2920)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu