Rails Can't verify CSRF token authenticity 看了社区之前同样问题依然没有解决.

bajiudongfeng · 2016年01月10日 · 最后由 bajiudongfeng 回复于 2016年01月11日 · 2609 次阅读

登陆使用的是 devise 做的 然后在前台使用$.ajax 发送 post 请求,出现了这个警告. 尝试了如下方法:

1.在 application.js 中添加如下代码

$.ajaxSetup({
  beforeSend: function (xhr) {
    xhr.setRequestHeader('X-CSRF-Token',$('meta[name="csrf-token"]').attr('content'));
  }
}); 

2.试着将$('meta[name="csrf-token"]').attr('content') 的值作为一个 ajax 的一个参数直接传过去. 都没有解决。

用 firefox 查看 request headers 里边也有 X-CSRF-Token 然后看有的朋友说可能是传入的和服务器端的 token 不一样。那该咋看服务器端的 token 值呢. 这个到底是哪里的问题呢? 谢谢了。

用 jquery_ujs 就好了,不需要自己搞这个事情的

https://github.com/rails/jquery-ujs

@huacnlee jquery_ujs 这个 gem rails 不都是默认都集成了吗?一直都存在啊。

layout 里面有 csrf_meta_tags 吗?

@rei 恩恩,这个东西有的。

预装的 jquery_ujs 已经处理了 csrf token,有问题应该是你添加或删除了不必要的东西。

@rei 谢谢。我再仔细找找看。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号