繁体   English   中英

HTTP GET代替POST随机发生

[英]HTTP GET instead of POST occurring randomly

自一月以来,我们开始遇到以下问题。 我们随机收到关于URL的GET请求,该请求仅应接收POST表单提交。 GET请求没有参数(即,在URL中看不到表单数据)。 这样的请求会导致Rails路由中出现异常(“仅允许发布请求。”),并且用户会收到错误页面500。

  • 该问题每天发生的次数少于一次(我们每天都会收到数百个POST请求)。
  • 它似乎发生在多种浏览器(IE7,IE8,Chrome)中。
  • 看来,使用表单重新加载页面可以解决该问题(我已经确认了一种情况,当非重新加载页面不能解决该问题时)。
  • 我自己无法重现该问题。
  • 请求来自真实用户,而不是机器人。
  • 该表单具有method="post"属性。
  • 该问题似乎主要发生在一种形式上,但也发生在其他形式上。

我在页面上检查了javascript,这可能会篡改form方法,但没有发现任何可疑对象。 该网站是用Rails制作的,使用了jQuery。

有什么想法,可能是问题原因或如何调查?

谢谢。

更新:我们运行Nginx + Mongrel Cluster Nginx access.log显示我们观察到的GET请求,并且Nginx error.log中没有相关条目。

我检测到与Chrome类似的行为,请执行以下操作:

  1. 获取表格(html)(response1)
  2. POST表单数据(response2)
  3. 张贴另一个表格数据(response3)
  4. 压回去

在这种情况下,Chrome不会返回到response2页面,而是对第2点中使用的地址进行GET。

当您更新(f5)POST所创建的页面时,以前的Chrome版本也会发生类似的错误。

Chrome版本:32.0.1700.76 m

我在服务器上看到了类似的错误。 大约一年或更久以前。 到目前为止,我记得这是由我们的Web服务器引起的。 老版本的Passenger不能很好地与Apache配合使用。 乘客升级到较新版本解决了该问题。 现在,我已切换到Nginx。

因此,请确保您已更新了Web服务器软件,无论使用何种方式。 并检查您的Web服务器日志中是否有错误,而不是Rails production.log。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM