我决定只加载一个页面来实现我的 Rails 站点,并通过 AJAX 完成其他所有操作。问题是生成的 CSRF 令牌meta
一旦用于提交注册或登录表单就会失效。如何在不重新加载页面的情况下更新它?
问问题
1642 次
3 回答
0
在每个 ajax 请求中:
添加到数据:
authenticity_token: '<%= form_authenticity_token %>'
于 2013-03-11T10:56:55.673 回答
0
我不认为 Rails 在每次请求(或发布或其他任何内容)之后都会使 CSRF 元令牌无效(如果没有,像主干.js 这样的框架将很难:)。
您可能在您认为没有正确令牌的无效请求之前发出请求,因此 rails 会删除您的会话,并且后续请求即使传递了先前正确的令牌,也会被标记为无效。
于 2012-07-04T13:16:50.007 回答
0
您可以在您的 ajax 调用中使用 beforeSend 如下所示的 put、post 方法。
$.ajax({
type: 'POST',
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
url: your url,
data: data
});
于 2015-11-23T12:10:42.790 回答