【问题标题】:HTML in GET request is a "Bad Request" only on one serverGET 请求中的 HTML 仅在一台服务器上是“错误请求”
【发布时间】:2012-01-30 19:26:37
【问题描述】:

我正在开发一个内容上传工具,目前正在获取 URL 中的 html 数据

(例如:“this is my <strong>content<strong> --submit--> http://site.com/?content=this+is+my+<strong>+content+<strong>

我意识到这是一种不好的做法,我正在寻找一个替代品,但我暂时需要它来为我的用户工作。

当我在我的机器(虚拟主机)上测试它时,它运行良好,但现在我将它放在我的 Nexcess 服务器上,它返回“错误请求”。我认为这与 Nexcess 设置有关?

Here is an example 的一个这样的请求。

有什么设置可以暂时关闭吗?

【问题讨论】:

  • 顺便说一句:您的示例是获取请求,而不是发布请求。
  • 哎呀,你是对的。我会编辑。
  • 没关系,我仍然从 get 请求中收到了 bad-request。
  • 不,这可能很重要。这始终是一个获取请求。我只是在这里写错了。我会试一试发帖请求。
  • 通常情况下,这会在服务器错误日志中说明......

标签: php html get request


【解决方案1】:

可能是因为 URL 太长(特别是查询字符串)。

从外观上看,您不是在发布数据,而是在获取数据。简单地将表单从 GET 切换到 POST 可能会解决问题,因为 POST 数据的长度几乎不像 GET 数据那样受到限制。

【讨论】:

    【解决方案2】:

    如果数据在 URL 字符串中,则它是 GET 而不是 POST。这可能是您的问题,具体取决于您在页面上的解释方式。

    你也可能不喜欢?food-name=&food-source=。您可能没有为这些键之一定义所需的值。

    编辑

    我会检查所有字符编码是否正确完成。但实际上,这是您想要通过发布而不是获取请求来完成的事情......

    第二次编辑

    当我在自己的服务器上测试此字符串并打印出结果 $_GET 数组时,这就是我得到的:

    大批 ( [食物名称] => [食物来源] => [测试名称] => [测试来源] => [theName] => 活着! [theCity] => San%20Francisco [州] => 加利福尼亚 [theCountry] => United%20States [地址] => 1972%20Lombard%20Street%20San%20Francisco%20CA [theLat] => 37.800409 [theLng] => -122.43401900000003 [位置] => 活着%20Restaurant,%20Lombard%20Street,%20San%20Francisco,%20CA [状态%5B%5D] => 素食主义者 [地点-来源] => 活着 [类型] => 地点 )

    您可能从该数组中认识到,该数组中缺少很多查询字符串。那里的某处查询字符串有错误。我的服务器并没有抛出错误,它只是停止读取字符串。

    【讨论】:

    • (到你的第二点)没错,但这可能会在下一页返回一个 php 错误而不是一个错误的请求错误。
    • 同意,但我猜测它不喜欢的查询字符串中存在错误。这确实应该通过 POST 来完成。
    • 莫斯定义。我现在正在尝试。谢谢。
    【解决方案3】:

    HTTP 协议的规范没有指定任何最大长度,实际限制是由网络浏览器和服务器软件强加的。

    过长的 URL 通常是错误的。超过 2,000 个字符的 URL 将无法在最流行的网络浏览器中使用。如果您打算让您的网站为大多数互联网用户服务,请不要使用它们。

    所以我会说,在你的情况下,你绝对无法保证它会起作用。它实际上取决于 URL 的长度、服务器类型和您的客户端使用的浏览器。

    也许gzcompress() 可以帮助你。但这会导致出现不允许的字符,因此您也必须使用urlencode()。但同样,你真的需要考虑不要在这里使用 GET :)

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 2017-03-30
      相关资源
      最近更新 更多