Ich versuche, einen Service-Worker-Endpunkt in meiner Datenbank zu registrieren, aber wenn ich meine Post-Daten mit Fetch senden die App einen Fehler melden.Rails Kann nicht überprüfen, CSRF-Token Authentizität AJAX mit X-CSRF-TOKEN-Header
Ich möchte die csrf Verifikation behalten. Siehst du etwas falsch?
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);
dank
danke es funktioniert, aber können Sie mir erklären, warum? – lokhi
@lokhi Ich weiß nicht, wie 'fetch' in Ihrem Fall funktioniert, aber' $ ajax' Authentizitätstoken wird tatsächlich in die 'beforeSend' Methode eingefügt. BeforeSend: Dieses Ereignis, das vor dem Start einer Ajax-Anforderung ausgelöst wird, ermöglicht Ihnen, das XMLHttpRequest-Objekt zu ändern (ggf. zusätzliche Header zu setzen). – 7urkm3n
Das Herunterschalten in eine andere Bibliothek ist nicht wirklich eine gute Lösung. Die Antwort von Omar Rayward ist die richtige Antwort auf diese Frage. –