解決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請求是參數過長的情況就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: