Я работаю над преобразованием существующего приложения в PWA. Часть этого PWA имеет дело с POST из формы входа в систему с перенаправлением на другую страницу. В Safari, если вы откроете приложение с главного экрана и попытаетесь войти в систему, в Safari откроется новая вкладка. Я бы хотел, чтобы этого не случилось.
Я пытался просто вернуться на POST и кэшировать перенаправленную страницу. Кажется, это работает немного, но потом вернется к старым способам. Я отлаживал код, и он, кажется, переключается, как только получает ответ от выборки. Вот мой обработчик выборки
if ((e.request.cache === 'only-if-cached' && e.request.mode !== 'same-origin') || (e.request.type === "POST") {
return;
}
e.respondWith(
caches.match(e.request)
.then(function (response) {
//Cache Hit
// IMPORTANT: Clone the request. A request is a stream and
// can only be consumed once. Since we are consuming this
// once by cache and once by the browser for fetch, we need
// to clone the response.
var fetchRequest = e.request.clone();
return fetch(fetchRequest).then(
function (response) {
//Check to see if we are valid
if (!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
// IMPORTANT: Clone the response. A response is a stream
// and because we want the browser to consume the response
// as well as the cache consuming the response, we need
// to clone it so we have two streams.
var responseToCache = response.clone();
caches.open(CACHE_NAME)
.then(function (cache) {
cache.put(e.request, responseToCache);
});
return response;
})
}))
Я ожидал, что Safari не откроется, но он открывается, и у меня нет идей, как это исправить.