apache中URL的最大長度是多少?它在哪裏記錄,可配置?什麼是apache的最大url長度?
我正在實施一個openid身份提供程序,並希望知道我遇到的限制。我知道Internet Explorer上2048字節的路徑限制。這可以使用用戶代理檢測專門處理。其他瀏覽器的URL限制更高。
所以我感興趣的是編碼應用程序時,Apache服務器的限制。
apache中URL的最大長度是多少?它在哪裏記錄,可配置?什麼是apache的最大url長度?
我正在實施一個openid身份提供程序,並希望知道我遇到的限制。我知道Internet Explorer上2048字節的路徑限制。這可以使用用戶代理檢測專門處理。其他瀏覽器的URL限制更高。
所以我感興趣的是編碼應用程序時,Apache服務器的限制。
爲request line的長度默認限制爲8190個字節(參照LimitRequestLine
directive)。如果我們減去請求方法的三個字節(即GET
),八個字節的版本信息(即HTTP/1.0
/HTTP/1.1
)和兩個字節的分隔空間,我們最終得到8177字節的URI路徑加上查詢。
你說得對。我用Apache 2.2.11測試了它,調整LimitRequestLine的效果很好。對於踢球,我已經成功地使用它與128K的網址。 – Stef 2009-08-17 22:46:24
你是否需要重新編譯才能使用這麼大的值?我的版本(2.2.15)默默地忽略了8190以上的LimitRequestLine指令,除非用添加的CFLAG「-D DEFAULT_LIMIT_REQUEST_LINE = 16384」重新編譯(然後它最多允許16384)。 – 2010-05-19 17:33:21
請注意,這是__bytes__;使用urlencoded多字節字符時,很容易達到此限制(因爲n字節字符需要n * 3個字節:''變成'%E2%98%A2')。 – Piskvor 2011-02-04 10:15:39
根據官方Apache文檔的官方長度是8,192,但許多人遇到麻煩約4000。
無論如何,MS Internet Explorer通常是限制因素,因爲它限制了最大URL大小爲2,048。
來自:http://www.danrigsby.com/blog/index.php/2008/06/17/rest-and-max-url-size/
GET請求中允許默認的URI大小爲8177個字符。 python中的簡單代碼用於這種測試。
#!/usr/bin/env python2
import sys
import socket
if __name__ == "__main__":
string = sys.argv[1]
buf_get = "x" * int(string)
buf_size = 1024
request = "HEAD %s HTTP/1.1\nHost:localhost\n\n" % buf_get
print "===>", request
sock_http = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_http.connect(("localhost", 80))
sock_http.send(request)
while True:
print "==>", sock_http.recv(buf_size)
if not sock_http.recv(buf_size):
break
sock_http.close()
在8178個字符,你會得到這樣的消息: HTTP/1.1 414請求URI太大
這是默認長度,可以使用LimitRequestLine配置指令進行更改。 – Stef 2011-09-15 06:32:32
這裏有一個bash腳本來檢查遠程服務器的最大極限(使用捲曲和Perl)。
您只需要某種可以用'x'進行擴展的url,並且總是返回200(或根據需要進行調整)。在某個點它會中斷,腳本將顯示最大長度。
下面的代碼:
url='http://someurl/someendpoint?var1=blah&token='
ok=0
times=1
while :; do
length=$((times+${#url}))
echo trying with $length
token=$(perl -le 'print "x"x'$times)
result=$(curl -sLw '%{http_code}' -o /dev/null "${url}${token}")
if [[ $result == 200 ]]; then
if [[ $ok == $times ]]; then
echo "max length is $length"
break
fi
ok=$times
times=$((times+1024))
else
times=$(((times+ok)/2))
fi
done
請求行的長度默認限制爲8192字節= 8 * 1024 它要更改限制,您必須在添加或更新您的tomcat server.xml的attribut maxHttpHeaderSize。
爲:
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
在這個例子中我的LIMITE設置爲65536個字節= 64 * 1024。
希望這會有所幫助。
Duplicate:http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-an-url – 2009-08-17 18:29:48
不重複。但是從S.Lott引用的一個很有用。 OP正在詢問特定服務器的限制。 – maxwellb 2009-08-17 19:13:05