Javascript 使用AJAX在rails上加载CSRF令牌

Javascript 使用AJAX在rails上加载CSRF令牌,javascript,ruby-on-rails,ajax,ruby-on-rails-3,csrf,Javascript,Ruby On Rails,Ajax,Ruby On Rails 3,Csrf,我决定只用一个页面加载来实现我的Rails站点,并通过AJAX完成其他所有工作。问题在于,在meta中生成的CSRF令牌一旦用于提交注册或登录表单,就会失效。如何在不重新加载页面的情况下更新它?我不认为rails会在每次请求(或post或其他任何请求)后使CSRF元令牌无效(如果没有,像backbone.js这样的框架将很难:) 您可能是在您认为没有正确令牌的无效请求之前发出请求,因此rails会删除您的会话,后续请求会被标记为无效,即使它们传递了以前正确的令牌。在每个ajax请求中: 添加到

我决定只用一个页面加载来实现我的Rails站点,并通过AJAX完成其他所有工作。问题在于,在
meta
中生成的CSRF令牌一旦用于提交注册或登录表单,就会失效。如何在不重新加载页面的情况下更新它?

我不认为rails会在每次请求(或post或其他任何请求)后使CSRF元令牌无效(如果没有,像backbone.js这样的框架将很难:)

您可能是在您认为没有正确令牌的无效请求之前发出请求,因此rails会删除您的会话,后续请求会被标记为无效,即使它们传递了以前正确的令牌。

在每个ajax请求中:

添加到数据:


真实性\u标记:'

您可以在对put、post方法的ajax调用中使用beforeSend,如下所示。

$.ajax({
键入:“POST”,
beforeSend:function(xhr){xhr.setRequestHeader('X-CSRF-Token',$('meta[name=“CSRF-Token”]')).attr('content')),
url:您的url,
数据:数据

});

使用
getElementById
getElementsByTagName
操作
META
标记有什么问题?如果我在注册前和注册后使用相同的标记,它会拒绝CSRF标记。我想知道如何在不重新加载整个页面的情况下更新令牌。那么,如果我想在不刷新页面的情况下发出多个请求(表单提交),那会是什么样子?