在Chrome上获取“无法验证CSRF令牌真实性”错误。适用于Safari

时间:2017-07-10 04:17:11

标签: ruby-on-rails-4

我使用Chrome浏览器收到任何POST请求(用于登录或通过表单发布数据)的错误。你可以在http://52.xx.xx.xxx/users/login试试。只需使用任何用户名/密码 - 应该给你:

  

您想要的更改被拒绝。

以下是日志中的错误摘录:

W, [2017-07-10T08:40:16.486974 #11349]  WARN -- : Can't verify CSRF token authenticity 
I, [2017-07-10T08:40:16.487259 #11349]  INFO -- : Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms) 
D, [2017-07-10T08:40:16.487526 #11349] DEBUG -- : User excluded error: #<ActionController::InvalidAuthenticityToken: ActionController::InvalidAuthenticityToken>

完全相同的登录请求或其他发布请求在Safari上进行。该网站有一个自签名证书。因此,我更改了Chrome设置以信任证书并接受Cookie。

请建议我应该查找的其他内容以及其他日志可能有助于调试问题。我在过去两天看了很多SO线程,找不到任何可以解决我问题的东西。

修改 删除了IP地址,以防止不必要的网站流量。

1 个答案:

答案 0 :(得分:0)

所以我通过在URL的开头使用https而不是http解决了这个问题。正如预期的那样,chrome会抛出与安全相关的警告,但添加异常允许发布请求无错误地通过。

Safari以某种方式能够将我的请求(使用http或根本没有)重定向到https,因为它正在运行。尝试使用safari上的http并最终遇到同样的问题。

将此标记为已解决 - 因为原始观察不再存在。我需要弄清楚如何在我的nginx后端将http和非http请求重定向到https,这应该可以解决问题。