Service worker през http: Възникна грешка в SSL сертификата при извличане на скрипта

Използвам service worker с https, а не https за моя проект angular 4. Но получавам тази грешка: Неуспешна регистрация на Service Worker: 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/**.*',
    ]
};

В angular-cli.json:

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

person Melchia    schedule 26.09.2017    source източник


Отговори (2)


Service Workers могат да се използват само през HTTPS връзка. Използвате ли това или не? Освен това HTTPS сертификатът трябва да е валиден.

Като странична бележка, кодът, който показвате, не е вашият service-worker.js. Този код е някои параметри и опции към някаква SW библиотека, която след това генерира вашия service-worker.js въз основа на тези опции. Най-вероятно вашият действителен service-worker.js се намира в директорията dist и се актуализира като част от процеса на изграждане.

person pate    schedule 27.09.2017
comment
Благодаря ви за информацията. това не го знаех Но възможно ли е да имам service worker без https? - person Melchia; 28.09.2017
comment
@Melchia Не, не е възможно. SW работи само върху HTTPS връзка, без значение дали се използва браузър. Можете да използвате HTTP при разработка локално и да заобиколите HTTPS ограничението/правилото, вижте това chromium.org/blink/serviceworker/service-worker-faq Маркирайте отговора ми като правилен, ако ви е помогнал :-) - person pate; 28.09.2017
comment
@pate хей, имам въпрос, използвам Angular Service Worker. За съжаление моите сървъри за тестване нямат ssl и няма да имат. (извън моя контрол) Проблемът, който имам, е, че при тестване моето angular приложение се кешира и не обслужва това в сървъра. (дори че SW не трябва да работи). някаква идея? - person Gerardo Buenrostro González; 18.05.2020
comment
@pate Как да настроите име за вътрешен сървър в частна LAN и да докажете собствеността върху него на доверен CA? И под локално имате предвид да стартирате уеб сървър на телефон? - person Damian Yerrick; 01.11.2020

Както спомена Пейт, „Service Workers могат да се използват само през HTTPS връзка“,

и ако това конкретно DomException се е случило локално, при достъп до уеб ресурс на локална машина със сертификат, една от тези най-нови версии на стартирания на браузъра може да е помогнала:

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/

person Oleksii Kyslytsyn    schedule 05.08.2019