HTTP的URL最长可以有多长

最近有朋友问我,在浏览器中输入的URL最长可以有多长呢?这个问题比较奇怪,因为我用了这么多年的计算机,还没有遇到URL不够长的情况。但是在企业应用中还真有不少这种情况,因为需要动态产生一些链接和一些相应的信息,为了把连接和相应的信息联系在一起,特别是在浏览器关闭Cookie功能的时候,在URL后面可能会带有长长的尾巴。

事实上,如果希望在提交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服务的缓冲区长度来实现。如下图:


[img]http://dl.iteye.com/upload/attachment/219297/d6a2e9df-fe89-3d57-9e9a-3227451f7f64.jpg[/img]


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值