請求(GET)或(POST):Dropwizard:如何解決414請求URI太長
http://localhost:8080/images?name=iVBORw0KGgoAAAANSUhEUgAAAAUA%20AAAFC ......
響應:
狀態代碼:414請求 - URI太長 連接:關閉 內容長度:0
如何增加請求大小?
請求(GET)或(POST):Dropwizard:如何解決414請求URI太長
http://localhost:8080/images?name=iVBORw0KGgoAAAANSUhEUgAAAAUA%20AAAFC ......
響應:
狀態代碼:414請求 - URI太長 連接:關閉 內容長度:0
如何增加請求大小?
您有一個超過8kb大小的請求URI! Eeesh!
由於瀏覽器,代理和網絡硬件中存在各種漏洞和錯誤,因此存在Request-URI限制。
儘管可以增加Jetty中的請求URI限制檢查,但爲Jetty選擇的值代表當前各種http客戶端和中介在公共Internet上使用的當前安全最大值。
警告:你不想做這個
這是不合適的:
這僅適用於直接與Jetty服務器通信的自定義HTTP客戶端之間的事務處理。
說明碼頭9.2.6.v20141205
如果你沒有一個碼頭基地${jetty.base}
目錄然而,創建一個,並對其進行初始化。
[user]$ mkdir mybase
[user]$ cd mybase
[mybase]$ java -jar /path/to/jetty-distribution-9.2.6.v20141205/start.jar \
--add-to-start=http,deploy,webapp
編輯${jetty.base}/start.ini
而改變(或添加)以下屬性與您想要的上限。
jetty.request.header.size=8192
並且不,沒有辦法禁用此限制檢查。
對於每次增加,你都會面臨越來越大的問題。
從一些瀏覽器(並最終所有瀏覽器)開始不發送請求,更不用說jetty接收它了。
同時,許多代理服務器處理您的請求的能力開始失敗,導致終止和失敗的連接或請求。有時甚至截斷了對Jetty的請求。
此外,每次增加都會暴露出各種圍繞頭部未檢查限制的漏洞,從而導致各種組執行基於CPU和內存的DOS攻擊時所需的網絡流量很少的能力。
正確的方法來解決此:
你真的應該切換到POST(或PUT)基於請求數據,並且不發送在HTTP協議的請求頭數據的量。
一個可能更簡單的方法是在你的yaml配置文件中設置requestHeaderSize。下面是我們的摘錄:
server:
applicationConnectors:
- type: http
maxRequestHeaderSize: 100KiB
其他可能的設置顯示here
至於你提到的GET或POST,爲什麼不切換到POST?該錯誤是關於在URL中發送大量數據。例如,即使您可以在服務器中增加它,但仍然可能會遇到代理問題。郵政似乎是一個更適合您的案件類型的請求。 –
正確的答案是**不**改變限制。您不應該將超長的數據作爲查詢參數發送。 –