GET請求的長度限制

2021-09-29 00:09:59 字數 1877 閱讀 8480

最近在生產環境為上游服務提供了乙個批量介面(dubbo介面),沒有做長度的限制,造成我呼叫下游的http請求(get請求)時由於長度(大概9000+個字元)超過了限制,造成直接返回400 bad request,影響了上游服務的使用,特查閱了相關資料,確定了nginx和apache等元件都是由相應的限制的,我們使用時要特別注意。

今日,看到前同事大牛多年前的csdn知識總結,發現原來一直信奉的1024get請求長度,是錯誤的。下面把從權威官網的解釋複製過來,以做更正。

1、http get方法提交的資料大小長度並沒有限制,http協議規範沒有對url長度進行限制。

目前說的get長度有限制,是特定的瀏覽器及伺服器對它的限制。

各種瀏覽器和伺服器的最大處理能力如下:

ie:對url的最大限制為2083個字元,若超出這個數字,提交按鈕沒有任何反應。

firefox:對firefox瀏覽器url的長度限制為:65536個字元。

safari:url最大長度限制為80000個字元。

opera:url最大長度限制為190000個字元。

google(chrome):url最大長度限制為8182個字元。

apache(server):能接受的最大url長度為8192個字元(這個準確度待定???)

microsoft internet information server(iis):n能接受最大url的長度為16384個字元。

2、理論上講,post是沒有大小限制的。http協議規範也沒有進行大小限制,起限制作用的是伺服器處理程式的處理能力。

tomcat下預設post長度為2m,可通過修改conf/server.xml中的「maxpostsize=0」來取消對post大小的限制。

注意:(若長度超限,則服務端返回414標識)

1、首先即使有長度限制,也是限制的是整個uri長度,而不僅僅是你的引數值資料長度。

2、http協議從未規定get/post的請求長度限制是多少

3、所謂的請求長度限制是由瀏覽器和web伺服器決定和設定的,瀏覽器和web伺服器的設定均不一樣,

這依賴於各個瀏覽器廠家的規定或者可以根據web伺服器的處理能力來設定。

get vs post擴充套件:

1、多數瀏覽器對於post採用兩階段傳送資料的,先傳送請求頭,再傳送請求體,即使引數再少再短,也會被分成兩個步驟來傳送(相對於get),也就是第一步傳送header資料,第二部再傳送body部分。http是應用層的協議,而再傳輸層有些情況tcp會出現兩次鏈結的過程,http協議本身不儲存狀態資訊,一次請求一次響應。對於tcp而言,通訊次數越多反而可靠性越低,能在一次鏈結中傳輸完需要的資訊是最可靠的,所以盡量使用get請求來減少網路耗時。如果通訊時間增加,這段時間客戶端於伺服器端一直保持連線狀態,在伺服器側負載可能會增加,可靠性會下降。

2、get請求能夠被cache,get請求能夠被儲存在瀏覽器的瀏覽歷史裡面(密碼等重要資料get提交,別人檢視歷史記錄,就可以直接看到這些私密資料)post不進行快取。

3、get引數是帶在url後面,傳統ie中url的最大可用長度為2048字元,其他瀏覽器對url長度限制實現上有所不同。post請求無長度限制(目前理論上是這樣)。

4、get提交的資料大小,不同瀏覽器的限制不同,一般在2k-8k之間,post提交資料比較大,大小靠伺服器的設定值限制,而且某些資料只能用post方法【攜帶】,比如file。

5、全部用post不是十分合理,最好先把請求按功能和場景分下類,對資料請求頻繁,資料不敏感且資料量在普通瀏覽器最小限定的2k範圍內,這種情況使用get。其他地方使用post。

6、get的本質是【得】,而post的本質是【給】。而且,get是【冪等】的,在這一點上,get被認為是【安全的】。實際上server端也可以用作資源更新,但是這種用法違反了約定,容易造成csrf(跨站請求偽造)。

參考文件:

GET請求中URL的最大長度限制總結

今天在做乙個資料重新整理的功能測試,涉及到入參的拼裝,拼裝完成後預計達到51000個字元,考慮到get請求是否有url長度限制,在網上查詢之後,瀏覽器和伺服器對url長度都有限制,現總結如下。1 ie ie瀏覽器 microsoft internet explorer 對url長度限制是2083 2...

http 請求 post get 長度限制

一 問題起因 在某專案釋放後bug統計的附件 釋放後問題 裡有 問題 原因 分析 備註 csv處理時,如果處理的主題數過多,發生url引數上限的錯誤 可變長度的引數通過url方式傳遞,會造成這種潛在的錯誤發生。1 屬於2次發生問題,開發方面沒有及時通過checklist等方式向組員傳達相關注意事項 ...

get請求的最大字元長度

各瀏覽器http get請求url最大長度並不相同,幾類常用瀏覽器最大長度及超過最大長度後提交情況如下 ie6.0 url最大長度2083個字元,超過最大長度後無法提交。ie7.0 url最大長度2083個字元,超過最大長度後仍然能提交,但是只能傳過去2083個字元。firefox 3.0.3 ur...