1. 程式人生 > 程式設計 >解決Springboot get請求是引數過長的情況

解決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請求是引數過長的情況就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。