简体   繁体   English

如何从Spring Boot正确地提供service-worker.js?

[英]How to serve service-worker.js from spring boot properly?

The browser complains the file is behind a redirect: 浏览器抱怨文件在重定向后面:

DOMException: Failed to register a ServiceWorker: 
The script resource is behind a redirect, which is disallowed.

What i tried so far: 到目前为止我尝试过的是:

Service worker on `static/service-worker.js`
Service worker on @GetMapping("/service-worker.js") @ResponseBody

In both cases i can read the file from brower in /service-worker.js but the registration fails with the same exception. 在这两种情况下,我都可以从浏览器中的/service-worker.js中读取文件,但是注册失败,但有相同的例外。

EDIT: (This is the registration I had problems with) 编辑:(这是我有问题的注册)

<script>
if ('serviceWorker' in navigator) {
    console.log("Will the service worker register?");
    navigator.serviceWorker.register('service-worker.js')
        .then(function(reg){
            console.log("Yes, it did.");
        }).catch(function(err) {
        console.log("No it didn't. This happened: ", err)
    });
}
</script>

My script trying to register was in /store/All . 我尝试注册的脚本在/store/All Registering with navigator.serviceWorker.register('service-worker.js') was calling /store/service-worker.js which was being redirected according to a rule I had programmed in my controller. navigator.serviceWorker.register('service-worker.js')是调用/store/service-worker.js ,根据我在控制器中编程的规则将其重定向。

The right call should be: navigator.serviceWorker.register('/service-worker.js') This ensures we call the service-worker.js in root and not in the same path as the current page. 正确的调用应该是: navigator.serviceWorker.register('/service-worker.js')这样可以确保我们在根目录中而不是在与当前页面相同的路径中调用service-worker.js。

tl;dr I was missing a / tl; dr我错过了/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM