我的控制器正在响应一个 js GET 请求,并且在我的js.erb
文件中我报告Fingerprint2
了用户浏览器生成的浏览器数据。这是通过 POST 请求完成的,因为数据字符串很大,所以我插入了一个beforeSend
添加 Authenticity Token 的方法。
但是,这被拒绝了ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken
。当我检查时,标头看起来就像在成功的 GET 请求中一样:
X-CSRF-Token:hl/TgkY7k0yBG03KX9IBrsDhk2K4tUUh8JTooT7A0yYZ0l53p8lTt0F3dZvRwyS3bIkbbkuTdElP2KisozjXjw==
js 代码如下所示:
(new Fingerprint2).get(function(fingerprint, components) {
return $.ajax({
url: "/user_browser",
type: "post",
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token',
$('meta[name="csrf-token"]').attr('content'))
},
data: {
some_id: '123',
components: JSON.stringify(components),
fingerprint: fingerprint
},
dataType: "json"
}).success(function(data) {});
});