什么是Apache的最大URL长度?(What is apache's maximum ur

2019-06-18 12:56发布

什么是Apache的一个URL的最大长度? 它在哪里记录,并且是可配置的?

我执行一个OpenID身份提供商,并想知道我要对付的限制。 我知道在Internet Explorer中的2048字节的路径限制。 可以专门使用用户代理检测处理。 其他浏览器有更高的URL限制。

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

Answer 1:

对的长度默认限制请求线是8190个字节(参照LimitRequestLine指令 )。 如果我们减去三个字节的请求方法(即GET ),八个字节的版本信息(即HTTP/1.0 / HTTP/1.1 )和用于分离空间的两个字节,我们最终得到8177个字节的URI路径加查询。



Answer 2:

  • Internet Explorer中:2,083个字符,在URL中的路径部分不超过2,048个字符
  • 火狐:65,536个字符显示,但是更长的网址不会仍然工作甚至达到过去的10
  • Safari浏览器:> 80000个字符
  • 歌剧:> 19万个字
  • IIS:16,384个字符,但配置
  • 阿帕奇:4,000个字符

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



Answer 3:

根据官方的Apache文档官方的长度为8,192,但很多人都在4000〜遇到了麻烦。

MS Internet Explorer中通常是限制因素,无论如何,因为它在2048帽最大URL大小。



Answer 4:

这里有一个bash脚本来检查远程服务器的最大极限(使用卷曲和Perl)。

你只需要某种能与“x”和总是返回200(或使其适应您的需求)进行扩展的URL的。 在某些时候,它会破坏和脚本将显示最大长度。

下面的代码:

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


Answer 5:

URI的允许的默认大小是GET请求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太大



Answer 6:

对于请求行的长度默认限制为8192字节= 8 * 1024。它要改变的限制,你必须在你的tomcat server.xml中attribut maxHttpHeaderSize添加或更新。

如:

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

在这个例子中我的LIMITE设置为65536个字节= 64 * 1024。

希望这会有所帮助。



文章来源: What is apache's maximum url length?
标签: apache http url