【问题标题】:Getting "Can't verify CSRF token authenticity" error on Chrome. Works fine on Safari在 Chrome 上出现“无法验证 CSRF 令牌真实性”错误。在 Safari 上运行良好
【发布时间】:2017-07-10 04:17:10
【问题描述】:

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

您想要的更改被拒绝。

这是来自日志的错误的 sn-p:

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。

请建议我还应该寻找什么以及其他哪些日志可能有助于调试问题。在过去的 2 天里,我查看了很多 SO 线程,但找不到任何解决我问题的方法。

编辑: 删除了 IP 地址以防止不必要的网站流量。

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 2014-06-16
      • 2017-07-15
      • 2015-07-24
      • 2012-08-12
      • 2020-10-22
      • 2015-08-21
      • 2017-01-01
      相关资源
      最近更新 更多