在 Django 中注册 Service Worker

5
我正在尝试在Django中注册服务工作者,但是我遇到了以下错误:

DOMException: 注册ServiceWorker失败:脚本资源在重定向之后,被禁止。

我的项目结构如下:
src/
   templates/sw.js
   static/js/main.js  #file where I register service worker

main.js

if ('serviceWorker' in navigator) {
        navigator.serviceWorker
            .register('sw.js', {scope: '/'})
            .then(function(reg) {
                console.log('Achieng Service worker Registration worked!');
            })
            .catch(function(error) {
                console.log(error);
            });

    }

根据这个 django-service worker,我已经定义了我的url为: path('sw.js/', (TemplateView.as_view(template_name="sw.js", content_type='application/javascript', )), name='sw.js'), 并且将我的sw.js放在templates文件夹中。
我可能会错过什么?我希望service worker具有默认范围'/'。
1个回答

5

您的服务工作者在/sw.js/处提供。 Django会自动将/sw.js重定向到/sw.js/。要使其正常工作,您只需要在path()中删除尾随斜杠即可。

Django约定在每个URL中使用尾随斜杠,但像这样的情况是例外。


很抱歉,尽管您的回答很有帮助,但由于我的声誉问题,我无法接受它。谢谢。 - Cindy Achieng
@CindyAchieng 不用谢。你不能点赞,但你应该能够接受它(答案旁边的勾号)。 - knbk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接