有两个应用服务器和一个交换机。当我使用应用程序服务器 ip 访问应用程序时,它工作正常。但是,如果我在我的 url 中使用 switch ip 错误请求错误仅针对 firefox 和 chrome 仅针对少数链接抛出。
14 回答
这是 ibm 对此问题的详细解释和解决方案。
问题(摘要)
对 HTTP 服务器的请求失败,响应代码为 400。
症状
来自浏览器的响应可能如下所示:
错误请求 您的浏览器发送了此服务器无法理解的请求。请求头字段的大小超过服务器限制。
HTTP Server Error.log 显示以下消息:“请求失败:读取标头错误”
原因
这通常是由于 Cookie 非常大,因此请求标头字段超出了为 Web Server 设置的限制。
诊断问题
为了帮助诊断问题,您可以在 httpd.conf 中的 LogFormat 指令中添加以下内容: error-note: %{error-notes}n
解决问题
对于服务器端:增加 httpd.conf 中指令 LimitRequestFieldSize 的值:LimitRequestFieldSize 12288 或 16384 对于如何设置 LimitRequestFieldSize,请检查增加 Apache 中 LimitRequestFieldSize 的值
对于客户端:清除 Web 浏览器的缓存应该没问题。
如果您使用 2.2.15-60 以上版本的 Apache httpd Web 服务器,那么也可能是因为_
主机名中的下划线。
https://ma.ttias.be/apache-httpd-2-2-15-60-underscores-hostnames-now-blocked/
我刚刚从浏览器中删除了我存储的 cookie、站点数据和缓存……它起作用了。我用的是火狐...
确保对 url 中的所有查询参数进行 url 编码。
在我的情况下,我的 url 中有一个空格“”,我正在使用 curl 进行 API 调用,而我的 api 服务器给出了这个错误。
表示以下网址
http://somedomain.com?key=some value with space
应该
http://somedomain.com/?key=some%20value%20with%20space
我参加聚会有点晚了,但是在使用 openidc auth 模块时遇到了这个问题。
我最终注意到 cookie 没有被正确清除,并且我至少有 10 个 mod_auth_openidc_state_... cookie,只要我提出请求,所有这些都会由我的浏览器发送。
如果这听起来很熟悉,请仔细检查您的 cookie!
我正在使用特殊字符测试我的应用程序并观察到相同的错误。经过一番研究,事实证明%符号是原因。我不得不将其修改为编码表示%25。现在一切都很好,感谢下面的帖子
就我而言:
在标题中
内容类型spacespace
或者
内容类型tab
有两个空格或制表符
当我删除它然后它工作。
就我而言,这是一个与 cookie 相关的问题,我有许多价值非常大的 cookie,这就是导致问题的原因。
您可以在stackoverflow.com上复制此问题,只需打开控制台并输入以下内容:
[ ...Array(5) ].forEach((i, idx) => {
document.cookie = `stackoverflow_cookie${idx}=${'a'.repeat(4000)}`;
});
那是什么?
我正在创建 5 个长度或值为 4000 字节的字符串的 cookie;然后重新加载页面,你会看到同样的问题。
我在google.com上尝试过,您会收到错误消息,但它们会自动为您清除 cookie,这是重新开始的一个不错的后备方案。
如果您在 WordPress 网站上收到此错误,请检查以下解决方案。
- 损坏的浏览器缓存和 Cookie:删除您的 Cookie 并清除缓存
- 重启你的服务器
对于 GET 请求,请确保传递的参数是 url 编码的。如果您使用的是 php,则可以使用urlencode函数
检查您的数据类型是否正确。
例如:如果您发送文件,您需要考虑发送文件的完整对象
在我的 magento2 网站中,单击产品时显示完全相同的错误,
我的解决方案是去编辑搜索引擎优化的值 - 这个产品的 URL 键,
确保 URL Key 中只有字母、数字和 -,例如 100-washed-cotton-duvet-cover-set,删除所有其他特殊字符,例如 % 。
当我Bad Request, Your browser sent a request that this server could not understand
尝试使用curl
.
我通过scp
将文件从源机器复制到目标机器来解决它。
如果您遇到同样的问题并且其他解决方案均无效,请再次检查 url。
在我的情况下,它最终是一个空格,当它被添加到 Cronjob 时,也有人不小心复制了一个空格。