2016-07-18 1 views
0

В настоящее время я пытаюсь использовать событие fetch для рабочего сервиса, с API-интерфейсом fetch для отправки запроса на сервер и получения HTML-кода. Проблема, с которой я сталкиваюсь, включает запросы POST. Когда я пытаюсь сделать это, когда есть POST, я теряю все заголовки в запросе POST (данные должны быть добавлены на сервер для сообщений). Я пытаюсь вручную захватить заголовки и добавить их в выборку, но без везения. Вот мой текущий код выборки события:Извлечение в Javascript в Service Worker

self.addEventListener("fetch", function(event) { 

    var acceptHeader = event.request.headers.get('Accept'); 
    //fetch options used for post requests 
    var fetchOptionsForPost = { 
     method: "post", 
     headers: event.request.headers, 
     credentials: event.request.credentials 
    } 


    //if it's a post request, 
    if(acceptHeader.indexOf('text/html') > -1 && event.request.method == "POST") {  
     var updatedFetch = fetch(event.request, fetchOptionsForPost).then(function(updatedResponse) { 
      //do something with response here. 
     }); 
    } 
}); 

Update:

Дал предложение crdumoul в снимок и выдает следующую ошибку консоли:

ServiceWorker.js:52 Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'ServiceWorkerGlobalScope': Cannot construct a Request with a Request whose mode is 'navigate' and a non-empty RequestInit. 
    at TypeError (native) 
    at [URL to service worker] 

ответ

0

Попробуйте изменить метод «POST» вместо «post» в fetchOptionsForPost.

+0

Дал, что выстрел, со следующей ошибкой: ServiceWorker.js: 52 Неперехваченные (обещанию) TypeError: Не удалось выполнить «загрузить» на «ServiceWorkerGlobalScope»: Не удается построить запрос с просьбой режим которого является «навигации 'и непустой RequestInit. на TypeError (родной) в [URL для обслуживающего работника] –

+0

Попробуйте установить «режим» в «no-cors» в fetchOptionsForPost. Кроме того, вы можете попробовать создать новый запрос для извлечения, а не просто передать объект init с исходным запросом. – crdumoul

+0

Я попробовал добавить «no-cors» и новый запрос на выборку. Но теперь сервер реагирует на ошибку «неправильные данные». –

 Смежные вопросы

  • Нет связанных вопросов^_^