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 字段 }}

 

posted @ 2021-07-31 15:07  二锅头不上头  阅读(1703)  评论(0编辑  收藏  举报