В настоящее время я пытаюсь использовать событие 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]
Дал, что выстрел, со следующей ошибкой: ServiceWorker.js: 52 Неперехваченные (обещанию) TypeError: Не удалось выполнить «загрузить» на «ServiceWorkerGlobalScope»: Не удается построить запрос с просьбой режим которого является «навигации 'и непустой RequestInit. на TypeError (родной) в [URL для обслуживающего работника] –
Попробуйте установить «режим» в «no-cors» в fetchOptionsForPost. Кроме того, вы можете попробовать создать новый запрос для извлечения, а не просто передать объект init с исходным запросом. – crdumoul
Я попробовал добавить «no-cors» и новый запрос на выборку. Но теперь сервер реагирует на ошибку «неправильные данные». –