在
app.js
中,
我正在检查导航器对象中是否存在 serviceWorker,如果可用,则注册 SW。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./service-worker.js', { scope: './' })
.then(function(registration) {
console.log("Service Worker Registered!");
}).catch(function(err) {
console.log("Service Worker not registered!", err);
});
}
尝试注册 SW 时,我在 Firefox 中收到以下错误。我还确保
service-worker.js
文件位于 src 目录下。
在 Firefox(版本 59.0.2)中检查我的 about:config,我启用了 Service Worker 和存储 API。所以这应该不是问题。
PS:相同的代码在 Chrome 上运行良好。
您是否检查了about:preferences#privacy中的cookie设置,它必须是“保留直到它们过期”,如果您选择了“保留直到我关闭firefox”,sw将不会注册。
您可以在此线程上找到详细信息: https://bugzilla.mozilla.org/show_bug.cgi?id=1429714
如果 serviceworker 的文件使用错误的 MIME 类型传递,则 Firefox 中也会出现相同的错误消息。在这种情况下,设置正确的 MIME 类型可以解决问题。如果您动态地传递 serviceworker 的文件,例如,可能会发生错误的 MIME 类型。使用 PHP。
正确的 MIME 类型必须是
Content-Type: application/javascript; charset=UTF-8
当您提供 Service Worker 文件本身时,通常需要使用
Service-Worker-Allowed
http 标头来托管它。如果此标头的值与您尝试在 Javascript 中注册服务工作人员的值不匹配,或者您尝试注册的范围超出了浏览器认为“安全”的范围,那么您将收到此错误.
ServiceWorkerContainer.register():
范围应用于指定位于同一目录中或比 Service Worker 嵌套更深的文档。如果您需要更广泛的范围,可以通过 HTTP Service-Worker-Allowed 标头来允许...
这种事不止一次发生在我身上,每次我都会到这里。至少下次我会帮助自己!
只要您为站点创建例外,就可以选中“关闭 Firefox 时删除 cookie 和站点数据”。 (在 Firefox 78.0.2 中测试):
单击
管理权限... 并输入 URL(例如 localhost:8000
)。单击允许,然后单击右下角的保存更改。 Service Worker(和 Cookie 等)现在应该适用于此 URL,但不适用于其他 URL。 开发人员请注意,
localhost
与例如
localhost:8000
(需要指定端口号)。
DOMException: The Operation is insecure
时出现错误
navigator.credentials.create()
。以下是一些可能的原因:
127.0.0.1
而不是
localhost
。 WebAuthn 不喜欢 IP 地址。
https://localhost/
和自签名(XAMPP 默认值)证书,而不是
http://127.0.0.1:82/
,错误已解决。