【发布时间】:2018-04-24 18:12:53
【问题描述】:
浏览器:Firefox 58.0.2(64 位)
我正在尝试编写一个very simple service worker 来缓存离线模式的内容,遵循here 和here 的指导。
当我第一次加载页面时,Service Worker 已正确安装。我可以通过查看 about:debugging#workers 来确认它正在运行。
但是,此时如果我尝试刷新页面(无论是在线还是离线),或导航到站点中的任何其他页面,我都会收到以下错误:
https://[my url] 的站点经历了网络协议 无法修复的违规行为。
由于出现错误,无法显示您尝试查看的页面 检测到数据传输。
请联系网站所有者告知他们这个问题。
控制台显示此错误:
未能加载“https://[my url]”。 ServiceWorker 将重定向的响应传递给 FetchEvent.respondWith() 而 RedirectMode 不是“跟随”。
在 Chrome 中,我得到了这个:
未捕获(承诺中)类型错误:无法在“ServiceWorkerGlobalScope”上执行“获取”:无法使用模式为“导航”且非空 RequestInit 的请求构造请求。
根据this thread,我在 fetch() 函数中添加了 { redirect: "follow" } 参数,但无济于事。
(是的,在进行更改后,我确实从 about:debugging 页面手动卸载了 Service Worker。)
据我了解,导致问题的是响应,而不是获取,对吧?这是因为我的服务器在提供请求的内容时发出了重定向?
那么我该如何处理 Service Worker 中的重定向?显然会有一些,我还是想缓存数据。
【问题讨论】:
标签: javascript redirect service-worker offline-caching