Get请求携带数据量的各种限制及解决办法

到新公司处理的第一个线上问题是某个商品页,在某个人机器上访问失败,nginx返回400错误,但其它人机器上没有问题,即使用虚拟机重建了出问题机器的软硬件环境也不会出问题。

经过对出问题机器的http请求进行抓包,发现URL超长,cookie也很大,然后问题就很清楚了,因为大部分人用的是IE浏览器,IE浏览器限制了URL长度,做了自动截断处理,所以总的http header不会超出nginx的限制,可以正常返回,而使用同样浏览器,不限制URL长度,但cookie长度较短,没超过nginx的header缓冲区限制,也不会造成400错误。


解决办法就是修改nginx、tomcat等使用到的应用服务器,让他们支持更大的header缓冲区。当然从兼容性等方面的考虑,根本解决办法是不要通过GET方式传递超长的参数。


==================下边列出了各个浏览器的限制和处理办法=========================

附:各浏览器对URL的长度限制(单位:字符个数)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000


附:各浏览器允许域下的最大cookie数目
IE :原先为20个,后来升级为50个
Firefox: 50个
Opera:30个
Chrome:180个
Safari:无限制


附:浏览器所允许的每个Cookie的最大长度
 
Firefox和Safari:4079字节
Opera:4096字节
IE:4095字节


附:各应用服务器设置header头部的参数

nginx: client_header_buffer_size和 large_client_header_buffers 
tomcat:maxHttpHeaderSize

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值