Ошибка 400 при отправке объекта PushSubscription на сервер
Я настраиваю push-уведомления с помощью сервисных работников + вебсокеты с использованием Django Channels и Django WebPush для получения подписки и отправки сообщения обратно на сервисный работник.
Пока я могу зарегистрировать сервисный рабочий и получить объект PushSubscription, содержащий детали подписки на push. Затем я пытаюсь отправить эту подписку в конечную точку webpush 'save_information', которая должна иметь эту подписку. Однако при попытке сделать это я получаю ошибку:
Response {type: 'cors', url: 'http://127.0.0.1:8000/webpush/save_information', redirected: false, status: 400, ok: false, …}body: (...)bodyUsed: falseheaders: Headers {}ok: falseredirected: falsestatus: 400statusText: "Bad Request"type: "cors"url: "http://127.0.0.1:8000/webpush/save_information"[[Prototype]]: Response
Вот код, который я имею в моем service worker/ код, связанный с получением подписки и отправкой через подписку:
const saveSubscription = async (subscription) => {
const browser = navigator.userAgent.match(/(firefox|msie|chrome|safari|trident)/ig)[0].toLowerCase();
const data = {
status_type: 'subscribe',
subscription: subscription.toJSON(),
browser: browser,
};
const res = await fetch('http://127.0.0.1:8000/webpush/save_information', {
method: 'POST',
body: JSON.stringify(data),
headers: {
'content-type': 'application/json'
},
credentials: 'include'
});
handleResponse(res);
}
const handleResponse = (res) => {
console.log(res);
}
...
self.addEventListener('activate', async () => {
try {
const applicationServerKey = urlB64ToUint8Array('***')
const options = { applicationServerKey,
userVisibleOnly: true }
const subscription = await self.registration.pushManager.subscribe(options)
saveSubscription(subscription)
} catch (err) {
console.log('Error', err)
}
})
и на моем сервере:
path('webpush/', include('webpush.urls')),
Буду благодарен за любую помощь