lok*_*khi 2 ajax ruby-on-rails csrf
我尝试在我的数据库中注册服务工作者端点,但是当我使用fetch发送我的帖子数据时,会引发错误.
我想保留csrf验证.你看错了吗?
var ready;
ready = function(){
if ('serviceWorker' in navigator) {
console.log('Service Worker is supported');
navigator.serviceWorker.register('/service-worker.js').then(function(reg) {
reg.pushManager.subscribe({
userVisibleOnly: true
}).then(function(sub) {
console.log('endpoint:', sub.endpoint);
console.log(sub);
var token = $('meta[name=csrf-token]').attr('content')
console.log(token);
return fetch('/register_endpoint', {
method: 'post',
headers: {
'Content-type': 'application/json',
'X-CSRF-TOKEN': token
},
body: JSON.stringify({
endpoint: sub.endpoint,
authenticity_token: token
})
});
});
}).catch(function(err) {
console.log('Erreur -> ', err);
});
}
};
$(document).ready(ready);
$(document).on('page:load',ready);
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 10
问题是如果credentials没有将会话cookie 指定为其中的选项,则不会发送会话cookie fetch.
credentials有3个可能的值:
omit - >不发送cookiesame-origin - >仅当URL与调用脚本位于同一源时才发送cookieinclude - >始终发送cookie,即使是跨域呼叫也是如此所以这应该可行:
return fetch('/register_endpoint', {
method: 'post',
headers: {
'Content-type': 'application/json',
'X-CSRF-TOKEN': token
},
body: JSON.stringify({endpoint: sub.endpoint}),
credentials: 'same-origin'
})
Run Code Online (Sandbox Code Playgroud)
这里有关于本机fetch api的更多信息.
| 归档时间: |
|
| 查看次数: |
2601 次 |
| 最近记录: |