Ошибка 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')),

Буду благодарен за любую помощь

Вернуться на верх