【问题标题】:Testing Service Worker locally with hostname from hosts file使用 hosts 文件中的主机名在本地测试 Service Worker
【发布时间】:2017-12-10 04:46:32
【问题描述】:

我正在为工作构建一个渐进式 Web 应用程序,但由于 SSL 要求,我无法在本地对其进行测试。

通常,这很简单,因为如果您使用 localhost(我相信即使没有 SSL),Chrome 也允许这样做。但是,我没有使用“本地主机”。我们有一个内部 Web 应用程序,其 URL 如下:“website.company.com”。登录此站点时,会为该子域 (company.com) 添加身份验证 cookie。为了让我的本地网站使用这些相同的 cookie,我在主机文件 (Windows) 中添加了一个条目,例如“127.0.0.1 my-local-site.company.com”。这样,当我访问我的本地站点 (my-local-site.company.com) 时,我拥有所有身份验证 cookie,并且可以对我实际部署的站点进行 CORS 调用。

这非常有效,除了 Service Worker 现在无法工作,因为“https://my-local-site.company.com”的证书无效并且 Service Worker 没有加载。我尝试创建一个自签名证书并将其添加到受信任的证书中,但 Chrome 仍然说该站点不受信任,并且无法加载 service worker 和 manifest.json 文件。

我的问题是有人知道如何: 1. 使 PWA 在没有有效证书的情况下完全在本地工作......或 2.让chrome识别我的自签名证书。

注意:我确实在 Chrome 启动中找到了一个标志,它允许服务人员在没有有效证书的情况下运行,这很好……但是,它仍然没有加载我的 manifest.json 文件。这是一个问题,因为我真的很想(向我的团队)演示 PWA 很酷的添加到主屏幕功能。

【问题讨论】:

  • I tried creating a self signed certification and added it to the Trusted certs...but Chrome still says the site is not trusted。确切的错误是什么?如果您已将其添加到计算机上的受信任或根证书颁发机构,则 chrome 应该将其视为有效证书。
  • 我刚刚注意到 Chrome 提供了更多信息。它说我缺少主题备用名称。我会解决这个问题,然后再试一次,然后告诉你。感谢您的快速回复。

标签: javascript service-worker progressive-web-apps manifest.json


【解决方案1】:

解决方案是重新创建证书并确保它具有主题备用名称。我将下面的代码放入批处理文件并运行它。我必须先安装openssl。创建证书后,我将 .crt 文件添加到 Trusted Authorities 证书中。然后我在我的 webpack 开发服务器配置中引用了 .crt 和 .key 文件。

REM PLEASE UPDATE THE FOLLOWING VARIABLES FOR YOUR NEEDS.
SET HOSTNAME=local-site.company
SET DOT=com
SET COUNTRY=US
SET STATE=WA
SET CITY=Seattle
SET ORGANIZATION=Company
SET ORGANIZATION_UNIT=IT
SET EMAIL=myemail@email.com

(
echo [req]
echo default_bits = 2048
echo prompt = no
echo default_md = sha256
echo x509_extensions = v3_req
echo distinguished_name = dn
echo:
echo [dn]
echo C = %COUNTRY%
echo ST = %STATE%
echo L = %CITY%
echo O = %ORGANIZATION%
echo OU = %ORGANIZATION_UNIT%
echo emailAddress = %EMAIL%
echo CN = %HOSTNAME%.%DOT%
echo:
echo [v3_req]
echo subjectAltName = @alt_names
echo:
echo [alt_names]
echo DNS.1 = *.%HOSTNAME%.%DOT%
echo DNS.2 = %HOSTNAME%.%DOT%
)>%HOSTNAME%.cnf

C:\"Program Files (x86)"\GnuWin32\bin\openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout %HOSTNAME%.key -days 3560 -out %HOSTNAME%.crt -config %HOSTNAME%.cnf
pause

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2014-10-08
    • 2014-10-06
    • 2012-06-14
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多