Ala*_*man 12 ruby ajax jquery ruby-on-rails
在我的rails应用程序中,我在ajax的ajax帖子上收到"警告:无法验证CSRF令牌真实性".
app/views/layouts/application.html.haml:
!!!
%html
%head
= stylesheet_link_tag "application", :media => "all"
= javascript_include_tag "application"
= csrf_meta_tags
%body
= yield
Run Code Online (Sandbox Code Playgroud)
ajax帖子:
$.ajax({ url: '#{card_credits_path}',
type: 'POST',
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', '#{form_authenticity_token}')},
dataType: "json",
data: { credit_uri: response.data.uri,
email: $('#email:hidden').val(),
name: $('.name').val()
},
success: function(randomobject) {
window.location = '/';
},
error: function(){
console.log("Card information is wrong!");
}
});
Run Code Online (Sandbox Code Playgroud)
zea*_*soi 17
假设您已使用Rails csrf_meta_tag
标记设置CSRF令牌,请求的令牌将在csrf-token
元标记中可用:
<meta content="u-n-i-q-u-e-t-o-k-e-n" name="csrf-token" />
Run Code Online (Sandbox Code Playgroud)
由于您使用的是jQuery,因此可以通过为beforeSend
密钥调用以下值将令牌传递给AJAX请求:
function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}
Run Code Online (Sandbox Code Playgroud)
nat*_*vda 13
此代码已经存在于此中rails/jquery-ujs
,因此使用它代码要容易得多:
beforeSend: $.rails.CSRFProtection
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8742 次 |
最近记录: |