Apache-Apache GET 的 Query_string 长度限制和修改

发布于 2016-11-14 13:51:53 字数 389 浏览 1457 评论 2

需要做系统的交互,需要使用get方式上传已经Stream化的文件,于是我使用wget工具将文件作为一个查询上传,然后上端接收后生产文件,现在发现大概在8000多个字节的时候就web服务器就告诉太长的 URI,更改什么配置能增加这个长度?

n=1
increase=1
content=1;
while [ $n -lt 8000 ]
do
content=$increase$content;
n=`expr $(($n+1))`
done

echo $content;
wget -O echo.txt http://192.168.15.55/todo.php?content=$content

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2017-09-25 16:07:28

看到了你写shell脚本,其实是用shell测试速度会非常的慢,如果将循环放到8000的话,我估计两分钟都执行不完,我给你写了PHP版本的测试方法

<?php
// filename:wget.php
$max = 18132 ;
$content = "1";
for($i=0;$i<$max;$i++)
{
$content="1".$content;
}
`wget -O /tmp/echo http://192.168.15.55/todo.php?content=$content;
echo file_get_contents('/tmp/echo');

这样的话直接在CLI中输入 PHP wget.php 就可以运行get到本地然后返回是否成功接收到对应的数据还有对应的长度

对于长度限制,楼上的说的已经很清楚了,我在这里在补充一下吧,其实本身HTTP协议本身没有限制URI的使用长度,一般都是对应的Browser或者Web Server出于一些原因进行了部分的限制,wget工具作为一个外部的程序,本身也没有对URI进行限制,也就是在你使用get方式的时候基本上没有任何的限制,完全可以将文件Stream化后串传送到服务器端再生成对应的文件,这对于只能够使用get方式的嵌入式环境非常的有用。

浮生未歇 2017-09-08 01:41:37

不仅仅服务器有限制,就连浏览器本身也有限制:
IE 2083个字符
Firefox 65535个字符,视乎超过10000个字符的仍能够正常工作
Safari 80,000字节
Opera 190,000字节(非常大了)
如果Get方式超过了这些字符长度,将会导致浏览器无法提交更改

对于服务器来说,常见的有IIS和Apache的
IIS URI长度为 16384个字节,也是可以配置的
Apache的老版本的是4000个字节,新的据说能够支持到8167个字符,我大体测试了下,具体的应该是在8000多一点吧

配置的话,apache2 默认的配置目录是

 /etc/apache2/apache2.conf

如果你能够找到 LimitRequestLine 这个配置选项的话,修改其后面的值即可,如果这个选项不存在的话,你直接在头部增加一下即可

 LimitRequestLine 80,000

这样的话就能支持到80k的长度了

参考资料的话可以参考apache项目官方的内容
http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文