我正在运行一个apache服务器。这样的后端由django支持,但放在apache服务器上。我有一个服务工作者,否则完全正常。这是进行注册的代码
navigator.serviceWorker.register('/static/js/components/sw.js').then(function() {
return navigator.serviceWorker.ready;
}).then(function(){console.log("success")})
但是上面的代码不知何故都没有给出任何回应。承诺仍处于未决状态。 即使在最后添加一个捕获也不会产生任何错误。它转到navigator.serviceworker.ready但不解析为then函数。我不确定是什么问题。
我尝试了以下内容:
我虽然问题可能是服务工作者需要在同一个来源,所以所以我添加了名为Service-Worker-Allowed的头:/ static但是没有做到这一点。
当我通过直接访问路径访问文件时,在添加 Service-Worker-Allowed:/ static 之后保存了html(例如:mywebsite / static / serviceworker.html)工作得很好。但是当我通过使用django映射的url(即我通过urls.py映射的url,例如:mywebsite / admin / worker)访问相同的html文件时,它似乎没有用。
试图给出相对路径,但相对路径在我的情况下不起作用。
我没有想法。这是一些django问题吗?
答案 0 :(得分:0)
我在这个链接中得到了上述问题的答案 Implementing push notification using chrome in Django 唯一的问题是我通过urls.py文件给出了sw.js文件的路径。
基本上,这个想法是服务工作者注册要求工作人员出现在同一个域中,例如
yourdomain / path_which_you_gave_during_registration
或者如果您设置了 Service-Worker-Allowed:/ path ,那么它将
yourdomain / path / path_which_you_gave_during_registration
因此,您需要对服务工作人员进行适当的更改才能使用。