【问题标题】:Bad Request, Your browser sent a request that this server could not understand错误请求,您的浏览器发送了此服务器无法理解的请求
【发布时间】:2012-04-25 05:20:06
【问题描述】:

有两个应用服务器和一个交换机。当我使用应用程序服务器 ip 访问应用程序时,它工作正常。但是,如果我在我的 url 中使用 switch ip 错误请求错误仅针对 firefox 和 chrome 仅针对几个链接。

【问题讨论】:

  • 你使用什么样的“开关”?可能是您的负载均衡器篡改了请求数据并以您的应用服务器无法理解的方式转发它。非法的 UTF-8 或截断的标头可能是候选者...
  • 可能你使用了一些特殊字符导致了这个错误。
  • @Sasivarnakumar 我也有同样的问题,你的通知帮助了我,然后我可以回答......谢谢。我只是删除了标题中的空格和制表符
  • 我们在带有 IIS 的 Windows 服务器上遇到了这个问题,其中发送到服务器的 SAML 请求太大,因为一些用户是 300 多个 Windows 组的成员。这些都是在 SAML 请求中发送的,导致请求大小过大。

标签: request


【解决方案1】:

Here 是 ibm 对此问题的详细解释和解决方案。

问题(摘要)

对 HTTP 服务器的请求失败,响应代码为 400。

症状

来自浏览器的响应可能如下所示:

错误请求 您的浏览器发送了此服务器无法理解的请求。 请求头字段的大小超出服务器限制。

HTTP Server Error.log 显示以下消息: “请求失败:读取标头时出错”

原因

这通常是由于 Cookie 非常大,因此请求头字段超出了为 Web Server 设置的限制。

诊断问题

为了帮助诊断问题,您可以在 httpd.conf 中的 LogFormat 指令中添加以下内容: 错误注释:%{错误注释}n

解决问题

对于服务器端: 增加 httpd.conf 中指令 LimitRequestFieldSize 的值: LimitRequestFieldSize 12288 或 16384 关于如何设置 LimitRequestFieldSize,请查看Increase the value of LimitRequestFieldSize in Apache

对于客户端: 清除您的网络浏览器的缓存应该没问题。

【讨论】:

  • 如何找到httpd.conf。我正在使用 ubuntu 和 apache tomcat7.0.34
  • “这通常是由于有一个非常大的 Cookie,因此请求头字段超出了为 Web 服务器设置的限制。” - 正确然后反过来,可能有客户端损坏的 cookie,这就是我今天发生的事情。必须进入隐私设置并删除有问题的 cookie。
  • 我在使用 AWS ELB 时遇到了同样的问题。 “必须进入隐私设置并删除有问题的 cookie。”我试过了还是没用
  • @amitbhardwaj 你可以使用这个命令找到 httpd.conf sudo nano /etc/httpd/conf/httpd.conf
【解决方案2】:

如果你使用2.2.15-60以上版本的Apache httpd web server,那么也可能是因为hostname中有下划线_

https://ma.ttias.be/apache-httpd-2-2-15-60-underscores-hostnames-now-blocked/

【讨论】:

  • 啊!我花了 7 个小时试图找出问题所在。嗯...谢谢!
  • 下划线_毁了我的生活:/
  • 天啊....非常感谢!浪费了几个小时。为什么 apache2ctl configtest 没有检测到这个?
【解决方案3】:

我刚刚从浏览器中删除了我存储的 cookie、站点数据和缓存... 有效。我用的是火狐...

【讨论】:

    【解决方案4】:

    确保对 url 中的所有查询参数进行 url 编码。

    在我的情况下,我的 url 中有一个空格“”,我正在使用 curl 进行 API 调用,而我的 api 服务器给出了这个错误。

    表示以下网址 http://somedomain.com?key=some value with space

    应该是 http://somedomain.com/?key=some%20value%20with%20space

    【讨论】:

      【解决方案5】:

      我正在使用特殊字符测试我的应用程序并观察到相同的错误。经过一番研究,结果是 % 符号是原因。我不得不将其修改为编码表示 %25。现在一切都很好,感谢下面的帖子

      https://superuser.com/questions/759959/why-does-the-percent-sign-in-a-url-cause-an-http-400-bad-request-error

      【讨论】:

        【解决方案6】:

        我参加聚会有点晚了,但在使用 openidc auth 模块时遇到了这个问题。

        我最终注意到 cookie 没有被正确清除,并且我至少有 10 个 mod_auth_openidc_state_... cookie,所有这些都会在我提出请求时由我的浏览器发送。

        如果您觉得这很熟悉,请仔细检查您的 cookie!

        【讨论】:

        • 我将 Sanctum 与 Laravel 一起使用,并在我的网络路由上放置了“sanctum”中间件而不是“auth”。 cookie 堆积起来,最终请求标头太大。将 web 中间件更改为 auth 并删除 cookie 立即修复它。
        【解决方案7】:

        就我而言:

        在标题中

        内容类型空格空格

        内容类型标签

        有两个空格或制表符

        当我删除它时它就起作用了。

        【讨论】:

          【解决方案8】:

          在我的例子中是 cookie 相关 问题,我有许多价值非常大的 cookie,这就是问题的根源。

          您可以在stackoverflow.com 上复制此问题,只需打开控制台并输入:

          [ ...Array(5) ].forEach((i, idx) => {
              document.cookie = `stackoverflow_cookie${idx}=${'a'.repeat(4000)}`;
          });
          

          那是什么?

          我正在创建 5 个长度或值为 4000 字节的字符串的 cookie;然后重新加载页面,你会看到同样的问题。

          我在 google.com 上尝试过,您会收到错误消息,但它们会自动为您清除 cookie,这是重新开始的一个不错的后备方案。

          【讨论】:

            【解决方案9】:

            在我的 magento2 网站中,单击产品时显示完全相同的错误,

            我的解决办法是去编辑 Search Engine Optimization - 这个产品的 URL Key 的值,

            确保 URL 键中只有字母、数字和 -, 例如 100 件水洗棉被套, 删除所有其他特殊字符,例如 %。

            【讨论】:

              【解决方案10】:

              我收到了Bad Request, Your browser sent a request that this server could not understand 当我尝试使用 curl 将文件下载到目标机器时。
              我通过使用scp 将文件从源计算机复制到 目标机器。

              【讨论】:

                【解决方案11】:

                如果您在 WordPress 网站上遇到此错误,请检查以下解决方案。

                1. 浏览器缓存和 Cookie 损坏:删除 Cookie 并清除缓存
                2. 重启服务器

                【讨论】:

                  【解决方案12】:

                  对于 GET 请求,请确保传递的参数是 url 编码的。 如果您使用的是 php,则可以使用 urlencode 函数

                  【讨论】:

                    【解决方案13】:

                    如果您遇到同样的问题并且其他解决方案均无效,请再次检查网址。

                    在我的情况下它最后是一个空格,当它被添加到Cronjob时,有人不小心也复制了一个空格。

                    【讨论】:

                      【解决方案14】:

                      检查您的数据类型是否正确。

                      例如:如果你发送文件,你需要考虑发送文件的完整对象

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2017-07-02
                        • 2016-04-10
                        • 2018-06-21
                        • 2013-11-01
                        • 2018-12-20
                        • 2018-12-13
                        • 2020-07-10
                        • 2021-07-04
                        相关资源
                        最近更新 更多