Url

使用 Amazon ELB 時 URL 的長度是否有限制?如果是這樣,有沒有辦法增加它?

  • August 17, 2021

由於 Amazon ELB 截斷了長(超過 1K 個字元)的 URL,我們似乎遇到了錯誤。

我搜尋了通常的嫌疑人,但找不到任何有關 Amazon ELB 的 URL 長度限制的討論。

亞馬遜 URL 的長度是否有限制?如果是這樣,有沒有辦法增加這個限制?

我用一個簡單的 bash 腳本對我在 ELB 後面執行的域進行了測試:

S='a';
URL='http://example.com/?foo=';
while true;
do
 echo $URL$S | wc -c;
 curl -I "$URL$S";
 S=$S$S;
done

這工作了一段時間:

2081
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Date: Tue, 05 Feb 2013 15:01:44 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Connection: keep-alive

4129
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Date: Tue, 05 Feb 2013 15:01:46 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Connection: keep-alive

但是一旦超過 8192 長度障礙就失敗了:

8225
HTTP/1.1 414 Request-URI Too Large
Content-length: 337
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 05 Feb 2013 15:01:47 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Connection: keep-alive

16417
HTTP/1.1 414 Request-URI Too Large
Content-length: 337
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 05 Feb 2013 15:01:47 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Connection: keep-alive

失敗的請求由 Apache 記錄在不同的文件中,因為GET字元串位於Host:標頭之前,因此 Apache 從未確定要使用哪個虛擬主機。

儘管如此,它仍然Apache 響應,而不是 ELB,甚至在單個GET字元串中超過 128KB。完整的 128KB 請求記錄在預設的 Apache 日誌文件中。256KB 後,curl無法處理請求。

Amazon ELB 中似乎沒有任何 URL 長度限制。

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