Javascript HTTP GET而不是随机出现的POST

Javascript HTTP GET而不是随机出现的POST,javascript,ruby-on-rails,http,Javascript,Ruby On Rails,Http,自1月份以来,我们开始遇到以下问题。我们会随机收到URL上的GET请求,而这些请求只会收到POST表单提交。GET请求没有参数(即URL中看不到表单数据)。这样的请求会导致Rails路由异常(“只允许post请求”),用户会收到错误页面500 这个问题每天发生不到一次(我们每天收到数百个POST请求) 这似乎发生在多个浏览器中(IE7、IE8、Chrome) 看起来,用表单重新加载页面解决了这个问题(我有一个已确认的案例,当不重新加载页面并没有解决它时) 我自己无法重现这个问题 请求来自真实用

自1月份以来,我们开始遇到以下问题。我们会随机收到URL上的GET请求,而这些请求只会收到POST表单提交。GET请求没有参数(即URL中看不到表单数据)。这样的请求会导致Rails路由异常(“只允许post请求”),用户会收到错误页面500

  • 这个问题每天发生不到一次(我们每天收到数百个POST请求)
  • 这似乎发生在多个浏览器中(IE7、IE8、Chrome)
  • 看起来,用表单重新加载页面解决了这个问题(我有一个已确认的案例,当不重新加载页面并没有解决它时)
  • 我自己无法重现这个问题
  • 请求来自真实用户,而不是机器人
  • 表单具有
    method=“post”
    属性
  • 这个问题似乎主要以一种形式出现,但也发生在其他地方
我检查了页面上的javascripts,它可能会对表单方法进行一些篡改,但我没有找到任何可疑的东西。这个站点是用Rails创建的,使用的是jQuery

有什么想法吗?问题的原因是什么?如何调查

谢谢


更新:我们运行Nginx+Mongrel集群。Nginx
access.log
显示了我们观察到的GET请求,在Nginx
error.log

中没有相关条目。我在服务器上看到过类似的错误。那是大约一年多以前的事了。据我记忆所及,这是由我们的web服务器引起的。的旧版本不能很好地与Apache配合使用。乘客升级到新版本修复了问题。现在我已经切换到Nginx了


因此,无论您使用什么,都要确保您已经更新了web服务器软件。并检查web服务器日志中的错误,而不是Rails production.log

我在我的服务器上看到过类似的错误。那是大约一年多以前的事了。据我记忆所及,这是由我们的web服务器引起的。的旧版本不能很好地与Apache配合使用。乘客升级到新版本修复了问题。现在我已经切换到Nginx了


因此,无论您使用什么,都要确保您已经更新了web服务器软件。并检查web服务器日志中的错误,而不是Rails production.log

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

  • 获取表单(html)(响应1)
  • 发布表单数据(响应2)
  • 发布其他表单数据(响应3)
  • 压制
  • 在这种情况下,Chrome不返回response2页面,而是访问第2点中使用的地址

    以前的Chrome版本在更新(f5)帖子生成的页面时也会出现类似错误


    Chrome版本:32.0.1700.76 m

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

  • 获取表单(html)(响应1)
  • 发布表单数据(响应2)
  • 发布其他表单数据(响应3)
  • 压制
  • 在这种情况下,Chrome不返回response2页面,而是访问第2点中使用的地址

    以前的Chrome版本在更新(f5)帖子生成的页面时也会出现类似错误


    Chrome版本:32.0.1700.76 m

    您可以添加一个调试JS代码,以便在页面返回此500状态消息时转储页面源代码。然后,在用户同意的情况下,您可以将其上载到您的站点,并检查源代码是否确实包含
    method=“post”
    。您可以添加调试JS代码,以便在页面返回此500状态消息时转储页面源代码。然后,在用户同意的情况下,您可以将其上载到您的站点,并检查源文件是否确实包含
    method=“post”
    。谢谢您的回答。我们运行Nginx+Mongrel集群。我检查了Nginx错误日志,但没有找到任何相关条目。access.log通常显示get请求。感谢您的回答。我们运行Nginx+Mongrel集群。我检查了Nginx错误日志,但没有找到任何相关条目。access.log通常显示get请求。