什么是apache的最大URL长度?

时间:2009-08-17 18:25:44

标签: apache http url

apache中URL的最大长度是多少?它在哪里记录,是否可配置?

我正在实施一个openid身份提供程序,并且想知道我遇到的局限性。我知道Internet Explorer上的2048字节路径限制。这可以使用用户代理检测特别处理。其他浏览器的URL限制要高得多。

所以我感兴趣的是编写应用程序时的apache服务器限制。

6 个答案:

答案 0 :(得分:67)

request line长度的默认限制为8190字节(请参阅LimitRequestLine directive)。如果我们减去请求方法的三个字节(即GET),版本信息的八个字节(即HTTP/1.0 / HTTP/1.1)和分隔空间的两个字节,我们最终URI路径加查询的内容为8177个字节。

答案 1 :(得分:17)

  • Internet Explorer:2,083个字符,URL的路径部分不超过2,048个字符
  • Firefox:显示65,536个字符,但更长的网址仍然可以工作,甚至超过100,000
  • Safari:> 80,000个字符
  • Opera:> 190,000个字符
  • IIS:16,384个字符,但可配置
  • Apache:4,000个字符

来自:http://www.danrigsby.com/blog/index.php/2008/06/17/rest-and-max-url-size/

答案 2 :(得分:6)

根据官方Apache文档的官方长度为8,192,但很多人在~4,000时遇到麻烦。

MS Internet Explorer通常是限制因素,因为它将最大URL大小限制为2,048。

答案 3 :(得分:3)

这是一个bash脚本,用于检查远程服务器的最大限制(使用curl和perl)。

您只需要某种可以使用“x”扩展并且始终返回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

答案 4 :(得分:2)

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 Request-URI太大

答案 5 :(得分:-2)

请求行长度的默认限制是8192字节= 8 * 1024。 如果要更改限制,则必须在tomcat server.xml中添加或更新attribut maxHttpHeaderSize。

为:

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

在本例中,我将限制设置为65536字节= 64 * 1024。

希望这会有所帮助。