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 文件中将LimitRequestLineLimitRequestFieldSize 设置为100000。但到目前为止还没有运气。

感谢任何帮助。

【问题讨论】:

【参考方案1】:

请求参数不能有无限长。我的猜测是您在发送图像 src 作为查询参数时达到了最大长度。

从this answer here 看来,您可以将LimitRequestLineLimitRequestFieldSize 设置为最多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 解决了 正确

下 httpd.conf 文件中的 LimitRequestLine 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 太长的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 具有不同别名和路径的多个站点

ubuntu系统---ubuntu16.04 + virtualenv + py2.7 + tf15.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14

Ubuntu 16.04 我卸载了 apache2 但现在无法重新安装

Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长

Ubuntu16.04下搭建LAMP环境

Ubuntu 已登陆 Windows Store;微软发布了 TypeScript 2.4