event.respondWith(caches.match(event.request).then(function (response) {
if (response) {
return response;
}
//return fetch(event.reuqest, { credentials: 'include' });
//event.respondWith(fetch(event.request, { credentials: 'include' }));
}));
Это общий код для обработки запроса через serviceworkers, если URL в кэше затем возвращают ответ кэша или извлекать его с сервера. Но мое сомнение касается двух прокомментированных строк, нам нужно использовать один из них для получения ответа.разница между кокетливой страницей и файлом в serviceworker
Мои сомнения, когда я использую event.respondWith(fetch(event.request, { credentials: 'include'
для извлечения страницы, я получаю следующую ошибку
DOMException: Не удалось выполнить «respondWith» на «FetchEvent»: Выборки событие уже ответил на.
Но страница, наконец, оказываются, безусловно, браузер, наконец, выборка ответа, но когда я использую Сэм для извлечения изображения, я получаю ту же ошибку, и на вершине, что изображение не извлекается.
Если я использую второй вариант, который return fetch(event.reuqest, { credentials: 'include' });
, то он отлично работает как для изображения, так и для страницы.
Я не могу понять, в чем причина этой ошибки, а также почему она ведет себя по-разному для файла и страницы.
Мое другое сомнение заключается в том, действительно ли мне нужен параметр полномочий здесь, я добавил его, потому что большинство реализаций, которые я видел в Интернете, использовали его, но я заметил, что объект запроса уже имеет свойство учетных данных с это, в настоящее время это не всегда
включают
когда-то
общего происхождения
тоже. Так может случиться, что я фактически переопределяю фактическое значение учетных данных, добавив его. Если это не так, то нет никакой разницы в его включении или нет. Это не имеет значения.
Но если это наоборот, мы не должны перезаписывать значение учетных данных, которое может иметь плохие побочные эффекты.
Да, но почему он ведет себя по-разному для файлов страниц и изображений? – biswpo
Да, я также думаю, что это правильный синтаксис, но почему он ведет себя по-разному для файлов страниц и изображений в случае, когда я использую event.respondWith? И также я правильно отношусь к параметру учетных данных? будет ли он перезаписывать существующее значение учетных данных event.request? – biswpo
Для первого вопроса, я не знаю, почему он ведет себя по-разному для изображений и страниц. Во втором вопросе да, он перезапишет существующее значение учетных данных (согласно https://fetch.spec.whatwg.org/#dom-request, новый созданный запрос принимает «учетные данные» из объекта запроса [шаг 7 ] и перезаписывается позже [шаг 18-19]). – Marco