javascript - Service Worker 失败 - RedirectMode 不是 "follow"时的重定向响应

标签 javascript redirect service-worker offline-caching

浏览器:Firefox 58.0.2(64 位)

我正在尝试写一个 very simple service worker按照指南缓存离线模式的内容 herehere .

当我第一次加载页面时,Service Worker 已正确安装。我可以通过查看 about:debugging#workers 来确认它正在运行。

但是,此时如果我尝试刷新页面(无论是在线还是离线),或导航到站点中的任何其他页面,我会收到以下错误:

The site at https://[my url] has experienced a network protocol violation that cannot be repaired.

The page you are trying to view cannot be shown because an error in the data transmission was detected.

Please contact the website owners to inform them of this problem.

控制台显示此错误:

Failed to load ‘https://[my url]’. A ServiceWorker passed a redirected Response to FetchEvent.respondWith() while RedirectMode is not ‘follow’.

在 Chrome 中,我得到了这个:

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.

根据 this thread ,我将 { redirect: "follow"} 参数添加到 fetch() 函数,但无济于事。

(是的,我确实在进行更改后从 about:debugging 页面手动卸载了 Service Worker。)

然而,据我所知,导致问题的是响应,而不是提取,对吗?这是因为我的服务器在提供请求的内容时发出了重定向?

那么我该如何处理 service worker 中的重定向呢?显然会有一些,我仍然想缓存数据。

最佳答案

部分从 https://superuser.com/a/1388762/84988 分离出来

在 FreeBSD-CURRENT 上,我有时会遇到使用 Waterfox 56.2.6 的 Gmail 问题。 (Waterfox 56 基于 Firefox 56.0.2。)有时只是重新加载页面;有时在恢复的 session 中加载页面时;等等。

FetchEvent.respondWith() | MDN以警报开始:

This is an experimental technology

一目了然,https://bugzilla.mozilla.org/buglist.cgi?quicksearch=FetchEvent.respondWith%28%29发现的两个bug是无关的。

Internet 上有大量报告,来自使用 Firefox 的 Gmail 用户,损坏的内容错误违反网络协议(protocol)等。发现:

关于javascript - Service Worker 失败 - RedirectMode 不是 "follow"时的重定向响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50008332/

相关文章:

javascript - 如何使用 Angular 声明特定模块

javascript - Angular 2 : how to use bootstrap-tagsinput properly

Python 请求 - 重定向后的身份验证

node.js - 如何通过添加附加参数来重定向传入的 URL 请求

重试相同请求的 HTTP 状态码

javascript - 无法在 Chrome 中安装服务 worker

javascript - 正则表达式接受 Javascript 中的字母数字和一些特殊字符?

javascript - 当我不期望时变得不确定

service-worker - ServiceWorkerRegistration.active 首次未设置(Chrome)

Angular 6 ServiceWorker - index.html 返回响应 404 Not Found