Firefox:Service Worker:SecurityError:DOMException:操作不安全

时间:2018-03-28 16:05:42

标签: javascript firefox service-worker progressive-web-apps service-worker-events

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 目录下。

enter image description here

在Firefox(版本59.0.2)中检查我的about:config我启用了服务工作者和存储API。所以这应该不是问题。

enter image description here enter image description here

PS:相同的代码在Chrome上运行良好。

5 个答案:

答案 0 :(得分:3)

你是否检查过about:preferences#privacy中的cookie设置,它必须“保持到期”,如果你已经“保持”直到我关闭firefox'选定的sw不会注册。

enter image description here

您可以在此主题中找到的详细信息: https://bugzilla.mozilla.org/show_bug.cgi?id=1429714

答案 1 :(得分:0)

只要您为网站创建例外,就可以保持选中“ Delete cookies and site data when Firefox is closed”。 (在Firefox 78.0.2中测试)

点击“管理权限...”,然后输入一个网址(例如localhost:8000)。单击“允许”,然后单击右下角的“保存更改”。服务工作者(和Cookie等)现在应该可以使用此网址,但不能使用其他网址。

开发人员,请注意,“ localhost”与例如“ localhost:8000”(您需要指定端口号)。

答案 2 :(得分:0)

对于Firefox 80,我去了about:Config并验证了dom.serviceWorkers.enabled设置为true enter image description here

然后我从Mozillaabout:preferences#privacy并未选中Delete cookies and site data when Firefox is closed enter image description here

答案 3 :(得分:0)

如果服务工作人员的文件传递的MINE-Type错误,则Firefox中也会出现相同的错误消息。在这种情况下,设置正确的MIME类型可以解决此问题。如果您动态交付服务工作人员的文件,例如,可能会出现错误的MIME类型。使用PHP。

正确的MIME类型必须为

Content-Type: application/javascript; charset=UTF-8

答案 4 :(得分:0)

当您提供 Service Worker 文件本身时,通常需要使用 Service-Worker-Allowed http 标头来托管它。如果此标头的值与您尝试在 Javascript 中注册 Service Worker 的值不匹配,或者您尝试注册的范围超出浏览器认为“安全”的范围,那么您将收到此错误.

在我身上发生过不止一次,每次我都在这里结束。至少下次我会帮助自己!