Tomcat

Tomcat 中的最大 URL 長度是多少?

  • November 12, 2020

它是可配置的嗎?我可以設置 Tomcat 以使具有 200K 查詢參數的 URL 成功通過包含的 servlet 嗎?

是的,我知道當您有大量數據時應該使用 POST;在這種特殊情況下,這是一個不太愉快的選擇。包含的應用程序(搜尋引擎)需要 GET 請求來執行搜尋。

您可以編輯 tomcat/conf/server.xml 的 HTTP/1.1 連接器條目,並添加一個 maxHttpHeaderSize=“65536” 以從預設最大值 8K 左右增加到 64K。我想您可以根據需要將這個數字提高到最高,但目前 64K 足以滿足我的需求,所以我沒有嘗試過。

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />

RFC2616 不強制HTTP GET 請求的長度,因為 Microsoft 報告其IE 最大長度支持頁面

因此,最大 GET 長度是與客戶端(瀏覽器)相關的問題。如果您的應用程序被人們使用,您可以強制使用給定的瀏覽器,那麼您可以簡單地找到該瀏覽器支持的長度。

在每種情況下,我都建議查看有關查詢字元串上與瀏覽器相關的問題的維基百科頁面(請求中為伺服器端應用程序帶來參數的部分,“?”後面的那個最終出現在請求中。

當然,也許tomcat也會在伺服器端設置限制。RFC 說:

伺服器必須能夠處理它們所服務的任何資源的 URI,並且如果它們提供可以生成此類 URI 的基於 GET 的表單,則應該能夠處理無限長度的 URI。如果 URI 比伺服器可以處理的長(參見第 10.4.15 節),伺服器應該返回 414(Request-URI Too Long)狀態。

因此您可以輕鬆地測試 Tomcat 是否有限制,並找出這個限制是什麼,只是使用不同的請求,從一個很長的請求開始,給出錯誤並下降一半。然後使用二分法快速找到準確值。

引用自:https://serverfault.com/questions/56691