Get請求攜帶資料量的各種限制及解決辦法

2021-06-21 08:04:30 字數 946 閱讀 9900

到新公司處理的第乙個線上問題是某個商品頁,在某個人機器上訪問失敗,nginx返回400錯誤,但其它人機器上沒有問題,即使用虛擬機器重建了出問題機器的軟硬體環境也不會出問題。

經過對出問題機器的http請求進行抓包,發現url超長,cookie也很大,然後問題就很清楚了,因為大部分人用的是ie瀏覽器,ie瀏覽器限制了url長度,做了自動截斷處理,所以總的http header不會超出nginx的限制,可以正常返回,而使用同樣瀏覽器,不限制url長度,但cookie長度較短,沒超過nginx的header緩衝區限制,也不會造成400錯誤。

解決辦法就是修改nginx、tomcat等使用到的應用伺服器,讓他們支援更大的header緩衝區。當然從相容性等方面的考慮,根本解決辦法是不要通過get方式傳遞超長的引數。

***************===下邊列出了各個瀏覽器的限制和處理辦法*************************

附:各瀏覽器對url的長度限制(單位:字元個數)

ie : 2803

firefox:65536

chrome:8182

safari:80000

opera:190000

附:各瀏覽器允許域下的最大cookie數目

ie :原先為20個,後來公升級為50個

firefox: 50個

opera:30個

chrome:180個

safari:無限制

附:瀏覽器所允許的每個cookie的最大長度

firefox和safari:4079位元組

opera:4096位元組

ie:4095位元組

附:各應用伺服器設定header頭部的引數

nginx:

client_header_buffer_size和

解決get提交資料量太大的問題

由於引數中是base64編碼後的資料,比較大,導致get請求失敗,提示資料太大。get最大是256b,post是2m。解決方式 使用偽post方式 上傳方法 function picupload var ocrimagesrc document.queryselector ocr img child...

GET請求的長度限制

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

請求大資料量介面時手動分頁

前段時間做專案遇到這麼種情況,需要呼叫乙個批量查詢介面,get請求的 比如根據使用者id批量查詢使用者資訊的,介面提供方提供的就是get請求的,然而我們一次要查詢幾萬個使用者,這樣請求的結果就是介面直接掛掉,因為get請求沒法傳遞那麼多資料,最後的解決方案是人為地進行分頁 private listq...