在Http1.1协议中并无提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度作任何的限制,服务器端必须可以处理任何它们所提供服务多能接受的URI,而且可以处理无限长度的URI,若是服务器不能处理过长的URI,那么应该返回414状态码。nginx
虽然Http协议规定了,可是Web服务器和浏览器对URI都有本身的长度限制。算法
服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是经过控制http请求头的长度来进行限制的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为maxHttpHeaderSize,都是能够本身去进行设置。浏览器
浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)tomcat
IE : 2803服务器
Firefox:65536cookie
Chrome:8182测试
Safari:80000url
Opera:190000spa
对于get请求,在url的长度限制范围以内,请求的参数个数没有限制。get
Post数据的长度限制与url长度限制相似,也是在Http协议中没有规定长度限制,长度限制能够在服务器端配置最大http请求头长度的方式来实现。
Cookie的长度限制分这么几个方面来总结。
(1) 浏览器所容许的每一个域下的最大cookie数目,没有去本身测试,从网上找到的资料大概是这么个状况
IE :原先为20个,后来升级为50个
Firefox: 50个
Opera:30个
Chrome:180个
Safari:无限制
当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。固然不管怎样的策略,仍是尽可能不要让Cookie数目超过浏览器所容许的范围。
(2) 浏览器所容许的每一个Cookie的最大长度
Firefox和Safari:4079字节
Opera:4096字节
IE:4095字节
(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,所以还会受到服务器请求头长度的影响。