大家好,又见面了,我是你们的朋友全栈君。
一、前言
Http中get与post本身是没有受到长度限制的,受到限制是浏览器与服务器对url长度限制。具体说明请阅读我的零一篇文章《关于 HTTP GET/POST 请求参数长度最大值的一个理解误区》。
二、概述
1、服务器限制
我目前使用的服务器一般是tomcat nginx,它们都是通过控制http请求头的长度来进行限制 的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为 maxHttpHeaderSize,都是可以自己去进行设置。
2、浏览器限制
浏览器的限制:每种浏览器也会对url的长度有所限制,
下面是几种常见浏览器的url长度限制:(单位:字符)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000
3、cookie长度限制
I.浏览器所允许的每个域下的最大cookie数目。
IE :原先为20个,后来升级为50个
Firefox: 50个
Opera:30个
Chrome:180个
Safari:无限制
当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。
II.浏览器所允许的每个Cookie的最大长度。
Firefox和Safari:4079字节
Opera:4096字节
IE:4095字节
III.服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。
三、解决方案
1、tomcat解决请求头长度过长,修改server.xml配置。
2、nginx解决请求头长度过长,修改nginx.conf配置。
#在http标签下增加
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172538.html原文链接:https://javaforall.cn