Http协议中的各种长度限制总结

1. URL长度限制

在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

虽然Http协议规定了,但是Web服务器和浏览器对URI都有自己的长度限制。

服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为maxHttpHeaderSize,都是可以自己去进行设置。

浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000

对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。

2. Post数据的长度限制

Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。

3. Cookie的长度限制

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请求头中传递给服务器,因此还会受到服务器请求头长度的影响。

4. Html5 LocalStorage

Html5提供了本地存储机制来供Web应用在客户端存储数据,尽管这个并不属于Http协议的一部分,但是随着Html5的流行,我们可能需要越来越多使用LocalStorage,甚至当它普及的时候跟它打交道就会同今天我们跟Cookie打交道一样多。

对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度:

Firefox\Chrome\Opera都是允许每个域的最大长度为5MB
但是这次IE比较大方,允许的最大长度是10MB
### HTTP请求参数的最大长度限制 HTTP协议本身并没有对GET请求参数的长度做出明确限制HTTP协议主要关注的是请求和响应的消息格式,而不是消息的长度。然而,在实际应用中,GET请求的参数长度受到浏览器服务器实现的限制[^1]。 不同的浏览器服务器URL长度有不同的限制: - **IE浏览器**:对URL的最大限制为2083个字符,超出此限制后,提交按钮将不会有任何反应。 - **Firefox浏览器**:对URL长度限制为65536个字符。 - **Safari浏览器**:URL的最大长度限制为80000个字符。 - **Opera浏览器**:URL的最大长度限制为190000个字符。 - **Google Chrome浏览器**:URL的最大长度限制为8182个字符[^2]。 服务器端也存在相应的限制: - **Apache Server**:通常能接受的最大URL长度为8192个字符(此值可能因配置不同而有所变化)。 - **Microsoft Internet Information Server (IIS)**:能接受的最大URL长度为16384个字符[^2]。 此外,Tomcat服务器在8.0版本中,默认情况下允许HTTP请求头的最大值为8KB(8192字节)。可以通过设置`maxHttpHeaderSize`参数来调整这一限制,从而间接影响GET请求URL长度限制[^4]。 需要注意的是,当GET请求URL长度超过服务器浏览器限制时,服务端可能会返回414状态码(Request-URI Too Large)[^3]。 对于POST请求HTTP协议同样没有规定具体的长度限制。POST请求长度主要受限于服务器处理能力。例如,在Tomcat服务器中,默认情况下POST请求的数据大小限制为2MB,但可以通过修改`conf/server.xml`文件中的`maxPostSize`参数来取消这一限制。 ### 示例代码:调整Tomcat中的POST请求大小限制 ```xml <!-- 在Tomcat的server.xml文件中,找到Connector标签 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="0" /> <!-- 将maxPostSize设置为0表示取消POST大小限制 --> ``` ### 总结 虽然HTTP协议本身没有对GET或POST请求的参数长度进行限制,但在实际应用中,这些限制通常由浏览器服务器的具体实现决定。GET请求的参数长度受限于URL的最大长度,而POST请求长度则主要受限于服务器的处理能力。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值