K'a*_*'ao 10 jquery csrf ruby-on-rails-3.1
这是我的问题,
我有一个rails 3.1应用程序,我正在尝试发出ajax请求,但是我收到警告消息"警告:无法验证CSRF令牌真实性"...
在我的布局中,我有辅助方法"csrf_method_tag",我添加了以下javascript代码(不知道是否真的需要):
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
});
Run Code Online (Sandbox Code Playgroud)
我的Gemfile包含gem jquery-rails(> = 1.0.12),我需要在我的application.js顶部使用jquery和jquery-ujs.
即使这样,该消息仍然出现.我忘记了什么吗?
谢谢你的帮助.
小智 9
我遇到了同样的麻烦.我试图抓住一个javascript事件(you_tube播放器完成)和Ajax回到我的服务器让我知道.我得到了:
WARNING: Can't verify CSRF token authenticity
每当jQuery ajax调用命中我的服务器.我在上面添加了你的代码修复
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token',
$('meta[name="csrf-token"]').attr('content'));
}
});
Run Code Online (Sandbox Code Playgroud)
它工作正常.我认为唯一的区别在于我的布局
<%= csrf_meta_tags %>
Run Code Online (Sandbox Code Playgroud)
而不是你在原帖中提到的csrf_method_tag.
所以,谢谢你的修复,它是在原始帖子中.
小智 7
什么对我有用 - 当没有表格工作时 - 是将结果包含<%= form_authenticity_token %>
在ajax数据有效载荷中.所以我做的事情就像tehprofessor在html中建议的那样:
<input id="tokentag" type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" />
Run Code Online (Sandbox Code Playgroud)
然后在javascript中:
tokentag = $('#tokentag').val()
submitdata = { "authenticity_token": tokentag, ...+whatever else you need to include+...}
Run Code Online (Sandbox Code Playgroud)
然后调用$.ajax
用submitdata
.
归档时间: |
|
查看次数: |
10091 次 |
最近记录: |