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