Подтвердить что ты не робот

Параметры тестирования сервисных работников через HTTP

Я хочу протестировать сервис-работников, но у меня есть установка виртуального хоста, и я не могу включить https на localhost.

Как я могу настроить белый URL моего локального виртуального хоста для тестирования сервисных работников когда я пытаюсь зарегистрироваться для сервисного работника на локальном хосте? Хром говорит, что https требуется, чтобы включить сервисного работника. Как я могу преодолеть это ограничение, по крайней мере, для локального тестирования.

4b9b3361

Ответ 1

В общем, вам нужно обслуживать как свою страницу, так и сценарий вашего работника сервиса через HTTPS, чтобы использовать работников сервиса. Обоснование описано в разделе "Предпочитать безопасное происхождение для новых мощных функций".

Имеется исключение из требования HTTPS для облегчения локальной разработки: если вы обращаетесь к своей странице и скрипту рабочего сервиса через http://localhost[:port] или через http://127.xyz[:port], то service рабочие должны быть включены без каких-либо дальнейших действий.

Если по какой-то причине вам нужен доступ к локальному веб-серверу с помощью имени хоста, отличного от localhost или 127.xyz, или если вам нужно протестировать что-то на удаленном веб-сервере, который не поддерживает HTTPS, есть обходной путь, который вы можете выполнить вручную. можешь использовать. Он включает запуск Chrome через командную строку и использование --user-data-dir и --unsafely-treat-insecure-origin-as-secure.

Эта ошибка содержит более подробную информацию, включая полный пример того, как запустить Chrome.

Firefox предлагает аналогичную функциональность через настройку devtools.serviceWorkers.testing.enabled.

Обратите внимание, что эта функция предназначена только для облегчения тестирования, которое в противном случае было бы невозможно, и вы всегда должны планировать использование HTTPS при обслуживании рабочей версии вашего сайта. Не просите реальных пользователей пройти через шаги включения этих флагов!

Ответ 2

Если вы хотите отладить подключенную службу сервисов мобильных устройств для реального тестирования поведения прогрессивного веб-приложения, параметры запуска ssl chrome не помогают, и вам определенно не нужно покупать сертификаты.

@chris-ruppel упоминает установку прокси-программного обеспечения, но на самом деле существует более простой способ использования переадресации портов:

Предполагая, что вы подключаете и отлаживаете свое устройство с помощью Chrome:

  • В Инструменты удаления Chrome "Удаленные устройства" откройте "Настройки" и добавьте правило "Переадресация портов" .
  • Если ваша локальная установка установлена ​​на localhost: 80,
  • просто добавьте правило "Device port 8080" (может быть любой нерентифицированный порт > 1024)
  • и локальный адрес "localhost: 80" (или mytestserver.sometestdomainwithoutssl.company:8181 или что-то еще)

После этого вы можете вызвать URL-адрес http://localhost:8080" на мобильном устройстве, и это будет отвечать "localhost: 80" на вашем реальном ПК/тестовом сервере. Прекрасно работает с сервисными работниками, как если бы ваша локальная машина работала на вашем мобильном телефоне.

Работает также для нескольких переадресаций портов и разных целевых доменов, пока вы не забыли использовать непривилегированные порты на своем мобильном устройстве. Смотрите скриншот: См. снимок экрана для некоторых настроенных портов, которые вызовут ПК при вызове на мобильном устройстве

Источником этой информации является документация удаленных устройств Google: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server (но по состоянию на апрель 2017 года не очень понятно прочитать этот простой ответ)

Ответ 3

Я часто хочу отлаживать и тестировать на реальном устройстве. Один из методов, который я придумал, включает в себя маршрутизацию трафика телефонной сети через Charles Proxy во время локального развития. В отличие от всех специфичных для Chrome решений, это работает с любым браузером на вашем телефоне.

  • Запустите Charles на моем ноутбуке (который также обслуживает мой сайт с Service Worker). После запуска Чарльза обратите внимание на IP/порт для шага 2.
  • Настройте мобильное устройство на использование моего ноутбука в качестве прокси.
    • Для Android просто нажмите и удерживайте Wi-Fi в настройках > Изменить сеть > Дополнительные настройки > Прокси. Используйте Ручной, чтобы установить IP/порт.
    • Для iOS нажмите значок (i) > HTTP-прокси. Выберите Ручной, затем установите IP/порт.
  • Посещение localhost на моем мобильном устройстве теперь позволяет зарегистрировать и протестировать Service Worker.

Ответ 4

Как сказал Джефф в первом ответе, вам не нужно https на локальном уровне, чтобы проверить Service Workers. Служащие службы будут регистрироваться и работать очень хорошо, пока вы обращаетесь к домену localhost - без HTTPS.

После того, как ваше приложение протестировано на локальном хосте, и вы хотите посмотреть, как он работает с https на самом деле, самый простой способ - загрузить приложение в GitHub. Вы можете бесплатно создать общедоступный домен (и с помощью HTTPS!).

Вот инструкции: https://pages.github.com/

Ответ 5

Если вы хотите протестировать сервис-работников на клиентском устройстве, которое не может запустить веб-сервер на localhost, общий метод выглядит следующим образом:

  • Дайте серверу имя хоста.
  • Дайте этому имени хоста сертификат.
  • Сделать IP-адреса доверенным ЦС, который выдал этот сертификат.

Но это легче сказать, чем сделать. В ноябре 2016 года AMA на Reddit представитель Let Encrypt подтвердил, что HTTPS в частной локальной сети "является очень сложным вопросом, и я думаю, что нет до сих пор у нас есть удовлетворительный ответ".

Общие способы предоставления вашему компьютеру имени хоста включают в себя предоставление стабильного внутреннего IP-адреса, а не того, который меняется ежедневно или каждый раз, когда вы активируете свой интернет-шлюз. Вам необходимо настроить DHCP-сервер в своей сети, как правило, на вашем шлюзе, чтобы настроить "резервирование", которое связывает частный адрес (обычно в пределах 10/8 или 192.168/16) с MAC-адресом вашей разработки рабочая станция Ethernet. Для этого прочитайте руководство по вашему шлюзу.

Теперь, когда ваша рабочая станция разработки имеет стабильный IP-адрес, есть время/деньги. Если вы хотите изучить расширенный DNS и использование OpenSSL и установить корневой сертификат на всех устройствах, с которыми вы планируете тестировать:

  • Запустите внутренний DNS-сервер в своей сети. Это может быть на вашем шлюзе или на рабочей станции разработки.
  • Настройте свой DNS-сервер на авторизацию для некоторых созданных TLD и рекурсивных для других TLD.
  • Дайте стабильное имя для частного IP-адреса рабочей станции разработки. Это дает ему внутреннее имя.
  • Настройте DHCP-сервер, чтобы указать адрес этого DNS-сервера другим устройствам, получающим лизинг.
  • На рабочей станции разработки используйте OpenSSL для создания ключевых папок для , который предлагает DNS с API. Это может быть непосредственно в пределах TLD или от одного из динамических DNS-провайдеров, которые внесли его в список Public Suffix. (Не-PSL динамические DNS-провайдеры неприемлемы из-за ограничения скорости, наложенные Let Encrypt.)
  • В этом файле зоны домена укажите запись A на вашем частном IP-адресе рабочей станции разработки. Это дает вашей рабочей станции разработки полное доменное имя.
  • Используйте Dehydrated, клиент ACME, который поддерживает вызов dns-01, чтобы получить сертификат для этого полного доменного имени из Let Encrypt центр сертификации.
  • Настройте HTTPS на веб-сервере на рабочей станции разработки, используя этот сертификат.
  • На всех устройствах получите доступ к этому имени.

Ответ 6

Самым простым способом тестирования pwa в моем случае было использование ngrok. https://ngrok.com/download войдите в систему, получите свой токен и установите его!

Когда вы запускаете ./ngrok http {your server port} убедитесь, что вы используете https, который будет отображаться в терминале после выполнения этой команды выше.


Вы также можете использовать https://surge.sh, это для размещения статической веб-страницы, если вы посетите здесь: https://surge.sh/help/securing-your-custom-domain-with-ssl сможет Посмотрите, как настроить сертификат SSL

Ответ 7

Я думаю, что самый простой способ проверить работника сервиса - это найти бесплатного хостинг-провайдера. В наше время существует множество сайтов, предоставляющих бесплатный хостинг. Вы можете легко разместить свое приложение на этих бесплатных серверах.

Я в основном использую героку и нетлифы. это бесплатно и легко в использовании.