Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长
Posted
技术标签:
【中文标题】Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长【英文标题】:Ubuntu 16.04 - Apache 2.4.18 - Request-URI Too Long 【发布时间】:2017-04-07 03:41:51 【问题描述】:我正在尝试从 Google 图片搜索结果中保存图片,但是当我在查询字符串参数中发送图片的 src 时,会出现以下错误:
Request-URI Too Long
The requested URL's length exceeds the capacity limit for this server.
Apache/2.4.18 (Ubuntu) Server at 127.0.1.1 Port 80
当我在本地机器上遇到这个错误时,我可以测试你们的任何想法。
注意:我确实在/etc/apache2/apache2.conf
文件中将LimitRequestLine
和LimitRequestFieldSize
设置为100000
。但到目前为止还没有运气。
感谢任何帮助。
【问题讨论】:
【参考方案1】:请求参数不能有无限长。我的猜测是您在发送图像 src 作为查询参数时达到了最大长度。
从this answer here 看来,您可以将LimitRequestLine
和LimitRequestFieldSize
设置为最多8192 字节或低于(而不是高于)该值的任何值。
在 Apache 中,如果您将其用作网络服务器,则可以将其限制为低于默认 8190 字节的内容,但不能限制为高于默认值的内容,而无需更改源代码并重新编译。
另请阅读this question,其中包含有关您的 url 最大长度的更多信息:
这是一个受欢迎的问题,由于最初的研究大约有 9 年的历史,我会尽量保持最新:截至 2016 年 11 月,该建议仍然有效。尽管 IE11 可能接受更长的 URL,但旧版 IE 安装的普遍性加上搜索引擎的限制意味着保持在 2000 个字符以下是最好的一般策略。
换句话说:尽量保持在 2000 个字符以下并使用 POST 发送大量数据...
【讨论】:
非常有用,因为我没有检查recompiling of the webserver
所涉及的行,如果数量更大,就像我要求的那样。是的,已经想到了POST
,但在我的情况下这是不可能的。至于GET
,我将忽略src
值超过2000
的图像。
@KunalDethe 很高兴我的回答很有帮助。为什么限制使用GET
而不是POST
?你能对此有所了解吗?
我正在构建一个浏览器扩展程序,它应该让我可以选择通过在图像上提供下载按钮来保存图像。但是为了进行下载,它会在 iframe 中加载页面并从查询字符串中获取 src。
假设我有一个 17419 长的 URL。有没有机会让它正常工作?我正在使用 WooCommerce 一次批量编辑大量产品,这对使其正常工作非常有帮助。
是否可以使用 POST 数据将产品数据发送到您的服务器而不是您的 url?在编辑的情况下,我什至可以想象另一种请求方法,如 PATCH 或 PUT,但概念是相同的;在请求对象中发送数据,而不是使用 url。【参考方案2】:
我也遇到了同样的问题,但通过添加 LimitRequestFieldSize 1000000000 解决了
正确
【讨论】:
【参考方案3】:如果您使用的是 CPanel 和 Cloudflare,我就是这样做的: Home -> 服务配置 -> Apache 配置 -> 包含编辑器 -> Pre VirtualHost Include -> 选择一个 Apache 版本
LimitRequestFieldSize 1048576 LimitRequestLine 1048576
按更新,然后按重新启动 Apache。
我尝试使用上述答案,Cloudflare 说: 400 错误请求 请求标头或 Cookie 太大 cloudflare-nginx
所以我不得不降低值。
【讨论】:
以上是关于Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu系统---ubuntu16.04 + virtualenv + py2.7 + tf15.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14
Ubuntu 16.04 我卸载了 apache2 但现在无法重新安装