解決Springboot get請求是引數過長的情況
問題原因
Springboot get請求是引數過長丟擲異常:Request header is too large 的問題
錯誤描述
java.lang.IllegalArgumentException: Request header is too large
解決方案
請求頭超過了tomcat的限值。本來post請求是沒有引數大小限制,但是伺服器有自己的預設大小。
設定伺服器大小:
1.普通tomcat
在server.xml中
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0" maxHttpHeaderSize ="102400"/>
處加上
maxHttpHeaderSize =”102400”
2.SpringBoot
SpringBoot專案更方便了,在application.properties檔案中新增
#請求引數過長設定
server.max-http-header-size=102400
補充知識:JavaWeb - URL 中很長的一串請求引數,為什麼不採用 POST 方式?
GET 方法
請注意,查詢字串(名稱/值對)是在 GET 請求的 URL 中傳送的:
/test/demo_form.asp?name1=value1&name2=value2
有關 GET 請求的其他一些註釋:
GET 請求可被快取
GET 請求保留在瀏覽器歷史記錄中
GET 請求可被收藏為書籤
GET 請求不應在處理敏感資料時使用
GET 請求有長度限制
GET 請求只應當用於取回資料
POST 方法
請注意,查詢字串(名稱/值對)是在 POST 請求的 HTTP 訊息主體中傳送的:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
有關 POST 請求的其他一些註釋:
POST 請求不會被快取
POST 請求不會保留在瀏覽器歷史記錄中
POST 不能被收藏為書籤
POST 請求對資料長度沒有要求
小雷FansUnion
get方式,是瀏覽器預設方式,訪問簡單,比如點選一個連結,直接就跳轉了。
如果用post,還需要構造表單,程式實現麻煩,使用者體驗還會收到“不能重複提交表單”等提示,麻煩很多。
get方式,使用者直接看到url和引數,複製貼上,可以方便收藏、轉發,而post不行。
網友看法 - 方騰飛
這個原因很多。在很多場景下,用GET實現起來更簡單,也足夠了,比如併發網給其他網站引流需要加些引數,這樣方便其他網站統計流量來源,如果用POST,併發網就的做一個Post提交,會比較麻煩。
割眼看世界
瀏覽器位址列開啟的預設就是GET,所以連結用GET很方便。
POST的提交需要表單或js提交,麻煩。
GET可以使用快取。
GET有利於SEO。
華仔的逆襲
Get方式的簡潔和快取比較能說服我。
以上這篇解決Springboot get請求是引數過長的情況就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。