警告:无法验证 CSRF 令牌的真实性
Posted
技术标签:
【中文标题】警告:无法验证 CSRF 令牌的真实性【英文标题】:WARNING: Can't verify CSRF token authenticity 【发布时间】:2017-07-19 22:37:52 【问题描述】:信息: 我正在开发中。在 http 的 3000 端口上运行。 在我的登录页面上,唯一的会话信息是 =
:_csrf_token "JISqEbDHAxteJM2E96/S/9iimgBLwVsLP37CpvIBo/A="
登录表单有这个隐藏元素:
<input name="authenticity_token" type="hidden" value="JISqEbDHAxteJM2E96/S/9iimgBLwVsLP37CpvIBo/A=">
所以 CSRF 似乎匹配。但是当我输入我的用户名和密码时,首先它说 警告:无法验证 CSRF 令牌真实性 然后在日志中我看到它更新了我的“last_sign_in”,这让我相信它成功了登录。devise::sessionsController#create
正在被调用。
我已经确认的事情:
app/views/layouts/application.html.erb
里面有 <%= csrf_meta_tag %>
jquery_ujs.js
正在页面上加载,我相信这会将 CSRF 信息添加到任何 jquery ajax 请求中。
在这个问题出现的时候,我开始弄乱我的应用程序服务器。
【问题讨论】:
【参考方案1】:这不是根本原因,但更高级的原因是我没有使用 SSL 证书来提供它。不知何故,这导致它不起作用。一旦我将 SSL 而不是 HTTP 添加到我的开发应用程序中,它就会再次起作用。有人知道为什么吗?
【讨论】:
以上是关于警告:无法验证 CSRF 令牌的真实性的主要内容,如果未能解决你的问题,请参考以下文章
“警告:无法验证 CSRF 令牌真实性”错误 - 带有 Devise 和 :token_authenticable 的 CORS