服务工作者通过http:获取脚本时发生SSL证书错误

时间:2017-09-26 22:33:01

标签: angular http https service-worker

我使用的是https而非https的服务工作者,用于我的angular 4项目。但我得到这个错误: 服务工作者注册失败:DOMException:无法注册ServiceWorker:获取脚本时发生SSL证书错误。

这是我的service-worker.js

module.exports = {
    navigateFallback: '/index.html',
    stripPrefix: 'dist',
    root: 'dist/',
    staticFileGlobs: [
        'dist/index.html',
        'dist/**.js',
        'dist/**.css',
        'dist/assets/image/**.*',
        'dist/assets/image/client-home-carousel/**.*',
    ]
};

一个角色-cli.json:

"assets": [
            "assets",
            "favicon.ico",
            "service-worker.js"
        ],

2 个答案:

答案 0 :(得分:2)

Service Workers只能通过HTTPS连接使用。你在用它吗?此外,HTTPS证书必须有效。

作为旁注,您显示的代码不是您的service-worker.js。该代码是某些SW库的一些参数和选项,然后根据这些选项生成service-worker.js。很可能您的实际service-worker.js位于dist目录中,并作为构建过程的一部分进行更新。

答案 1 :(得分:0)

因此,正如头脑中提到的“服务工作者只能通过HTTPS连接使用”,

并且如果该特定DomException发生在本地,则当使用证书访问本地计算机上的Web资源时,这些最新版本的浏览器启动之一可能会有所帮助:

open -a Opera.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111

open -a Brave\ Browser.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111

open -a Google\ Chrome.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111

Chromium浏览器未从这些设置开始,以允许克服此特定的DomException以便在本地将SSL与Service Worker一起使用。

此人也提供了有关此事的一些见解:https://deanhume.com/testing-service-workers-locally-with-self-signed-certificates/