GET请求中的HTML是“;坏请求”;仅在一台服务器上


HTML in GET request is a "Bad Request" only on one server

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

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

我意识到这是一种糟糕的方法,我正在研究一种替代品,但我暂时需要它来为我的用户服务。

当我在我的机器(虚拟主机)上测试它时,它工作得很好,但现在我在Nexcess服务器上安装了它,它会返回"错误请求"。我想这与Nexcess设置有关吗?

以下是一个此类请求的示例。

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

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

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

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

它也可能不喜欢你有?food-name=&food-source=。您可能没有为其中一个键定义必需的值。

编辑

我会检查所有的字符编码是否正确。但实际上,这是你想通过帖子做的事情,而不是通过获取请求。。。

第二版

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

大堆([食品名称]=>【食物来源】=>[testingName]=>【测试来源】=>[theName]=>活着![城市]=>旧金山%20[State]=>加利福尼亚[国家]=>美国%20个州[地址]=>1972%20伦巴第%20街道%20旧金山%20加利福尼亚州[theLat]=>37.800409[theLng]=>-122.43401900000003[位置]=>活着%20Restaurant,%20Lombard%20Street,%20San%20Francisco,%20CA[状态%5B%5D]=>素食主义者[放置源]=>活动[type]=>放置)

您可能从该数组中认识到,数组中缺少许多查询字符串。在那里的某个地方,查询字符串有一个错误。不过,我的服务器没有抛出错误,它只是停止读取字符串。

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

超长的URL通常是一个错误。超过2000个字符的URL在最流行的web浏览器中无法工作。如果你想让你的网站为大多数互联网用户服务,就不要使用它们。

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

也许gzcompress()可以帮助你。但这将导致不允许使用字符,因此您也必须使用urlencode()。但是,您确实需要考虑不要在这里使用GET:)