什么是apache';最大url长度是多少?
apache中URL的最大长度是多少?文件记录在哪里,是否可配置 我正在实现一个openid身份提供者,我想知道我面临的限制。我知道Internet Explorer上的2048字节路径限制。可以使用用户代理检测进行特殊处理。其他浏览器有更高的URL限制什么是apache';最大url长度是多少?,apache,http,url,Apache,Http,Url,apache中URL的最大长度是多少?文件记录在哪里,是否可配置 我正在实现一个openid身份提供者,我想知道我面临的限制。我知道Internet Explorer上的2048字节路径限制。可以使用用户代理检测进行特殊处理。其他浏览器有更高的URL限制 所以我感兴趣的是apache在编写应用程序时的服务器限制 根据官方Apache文档,官方长度为8192,但许多人在4000左右遇到了麻烦 MS Internet Explorer通常是限制因素,因为它将最大URL大小限制在2048。 Inter
所以我感兴趣的是apache在编写应用程序时的服务器限制 根据官方Apache文档,官方长度为8192,但许多人在4000左右遇到了麻烦 MS Internet Explorer通常是限制因素,因为它将最大URL大小限制在2048。
- Internet Explorer:2083个字符,URL的路径部分不超过2048个字符
- Firefox:显示65536个字符,但即使超过100000个,更长的URL仍然有效
- Safari:>80000个字符
- 歌剧:超过190000个字符
- IIS:16384个字符,但可配置
- Apache:4000个字符
From:的默认长度限制为8190字节(请参阅)。如果我们为请求方法减去三个字节(即
GET
),为版本信息减去八个字节(即HTTP/1.0
/HTTP/1.1
),为分隔空间减去两个字节,那么URI路径加上查询将得到8177个字节。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太大这里有一个bash脚本,用于检查远程服务器的最大限制(使用curl和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中添加或更新属性maxHttpHeaderSize 作为:
在本例中,我将限制设置为65536字节=64*1024
希望这会有所帮助。复制:不复制。但是S.洛特的参考文献是有用的。OP要求特定服务器的限制。你是对的。我用Apache2.2.11测试了它,调整LimitRequestLine效果很好。对于kicks,我已经成功地将其用于128K URL。您是否必须重新编译才能使用如此大的值?我的版本(2.2.15)默认忽略8190以上的LimitRequestLine指令,除非使用添加的CFLAG“-D DEFAULT_LIMIT_REQUEST_LINE=16384”重新编译(然后最多允许16384)。请注意,这是个字节;对于URL编码的多字节字符,很容易达到这一限制(因为一个n字节字符需要n*3个字节:
☢代码>变为%E2%98%A2
)。也会自动忽略2.2.22上的指令。这是默认长度,可以使用LimitRequestLine配置指令进行更改。引用的链接无效。或者问题是关于Apache,而不是Tomcat。
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />