3

Мой код для того же самого. Я вызываю fetch(), но запрос в сети и сервере не имеет заголовков запросов, таких как cookie. Я нашел еще одно сообщение для этого Request headers not sent from Service Worker, но он не смог решить мою проблему.Fetch() в обслуживании js не может отправлять заголовки запросов?

self.addEventListener('push', function (event) { 
    event.waitUntil(
    self.registration.pushManager.getSubscription().then(function (subscription) { 
     fetch('/user/get-notification', { 
     mode: 'no-cors', 
     method: 'post', 
     headers: { 
      'Authorization': 'Bearer ' + self.token, 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify(subscription) 
     }).then(function (response) { 
     if (response.status != 'success') { 
      console.log('Looks like there was a problem. Status Code: ' + response.status); 
      throw new Error(); 
     } 

     return response.json().then(function (data) { 
      var title = data.title; 
      var message = data.message; 
      var icon = data.image; 

      return self.registration.showNotification(title, { 
      body: message, 
      icon: icon 
      }); 
     }); 
     }).catch(function (err) { 
     console.error('Unable to retrieve data', err); 
     }); 
    }) 
); 
}); 
+0

У меня такая же проблема, но я не думаю, что такое использование пользователя/получение уведомления в приведенном выше коде. –

+0

что вы подразумеваете под себя.token? –

ответ

-2

Ну после просмотра официальной документации службы работника, я заметил, добавление

полномочия: 'включить'

в выборке позволяют отправлять заголовки запросов. Спасибо за поддержку.

1

Заголовки - это интерфейс, вы можете предоставить ему новый набор параметров путем инициализации. Что-то вроде этого:

headers: new Headers({ 
     'Authorization': 'Bearer ' + self.token, 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
}) 
3

Чтобы включить кук, нужно добавить credentials поля к вашему запросу:

fetch('/user/get-notification', { 
    credentials: 'include', // <-- To include cookies! 
    mode: 'no-cors', 
    method: 'post', 
    headers: { 
    'Authorization': 'Bearer ' + self.token, 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify(subscription) 
})