jquery - Rails 3.1 - CSRF 被忽略?

标签 jquery ruby-on-rails-3.1 csrf

这是我的问题

我有一个 Rails 3.1 应用程序,我正在尝试发出 ajax 请求,但收到警告消息“警告:无法验证 CSRF token 真实性”...

在我的布局中,我有辅助方法“csrf_method_tag”,并且添加了以下 JavaScript 代码(不知道是否真的需要):

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

我的 Gemfile 包含 gem jquery-rails (>= 1.0.12),并且我需要在 application.js 顶部添加 jquery 和 jquery-ujs。

即使如此,该消息仍然出现。我是不是忘记了什么?

感谢您的帮助。

最佳答案

我也遇到了同样的麻烦。我试图捕获一个 javascript 事件(you_tube 播放器已完成)并 Ajax 返回到我的服务器来让我知道。我得到:

WARNING: Can't verify CSRF token authenticity

whenever the jQuery ajax call hit my server. I added your code fix above

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

而且效果很好。我认为唯一的区别在于我的布局

<%= csrf_meta_tags %>

而不是您在原始帖子中提到的 csrf_method_tag。
所以感谢您的修复,它在原始帖子中。

关于jquery - Rails 3.1 - CSRF 被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270947/

相关文章:

javascript - ng-model 进入文本区域不会更新

ruby-on-rails - rails 3.1 : alias/images to/assets directory

ruby-on-rails - rake 错误:warning: already initialized constant MAJOR

spring-boot - Spring CSRF保护场景?

angular - 使用 Angular + Spring Boot + REST + JWT 进行 CSRF 保护

javascript - 解决方案 Bootstrap 表单验证

javascript - jQuery 将 HTML 渲染为带有切换的纯文本(切换工作正常,但无法将 HTML 转换为文本)

jquery - .live() 或 .livequery()

ruby-on-rails - 在我看来,我如何使用 ruby​​ on rails find 方法,或者这是不好的做法?

javascript - jQuery : Post Request is breaking while uploading multiple images