HTTP协议GET方法传参最大长度理解误区


结论

  • HTTP 协议未规定GET和POST的长度
  • GET的最大长度是因为浏览器和WEB服务器显示了URI的长度
  • 不同浏览器和WEB服务器,限制的最大长度不同
  • 若要支持IE,则最大长度为2083 byte,若只支持chrom,最大长度是8182 byte

误解

大家都知道http中存在GET和POST两种最常用的请求方式。

【HTTP】GET传参最大长度的理解误区

 1 http协议并没有对get请求的协议进行限制。对get请求参数长度限制的是客户端(浏览器),服务端,代理服务器(nginx)。
 2 
 3 常见的浏览器对get请求url长度的限制如下:
 4 1、IE
 5 IE浏览器(Microsoft Internet Explorer) 对url长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)。
 6 
 7 2、firefox
 8 firefox(火狐浏览器)的url长度限制为 65 536字符,但实际上有效的URL最大长度不少于100,000个字符。
 9 
10 3、chrome
11 chrome(谷歌)的url长度限制超过8182个字符返回本文开头时列出的错误。
12 
13 4、Safari
14 Safari的url长度限制至少为 80 000 字符。
15 
16 5、Opera
17 Opera 浏览器的url长度限制为190 000 字符。Opera 9 地址栏中输入190 000字符时依然能正常编辑。
18 
19  
20 
21 代理服务器对get请求的限制如下:
22 当请求头过大时,超过large_client_header_buffer时,nginx可能返回"Request URI too large" (414)或者"Bad-request"(400)错误。  这次需要设置配置文件中 large_client_header_buffer
23 
24 当Request line的长度大于large_client_header_buffer的一个buffer(128k)时,nginx会返回"Request URI too large" (414)错误(url长度太长)。这时需要设置配置文件中 
25 
26 client_header_buffer_size
27 
28  Django服务端设置gunicore控制服务对get请求的长度限制
29 在gunicore中配置 
30 
31 {{limit_request_field_size 字段 }}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM