使用hosts文件中的主机名在本地测试Service Worker

时间:2017-12-10 04:46:33

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

我正在为工作构建渐进式Web应用程序,但由于SSL要求,我在本地测试它时遇到了麻烦。

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

除了服务工作者现在不能工作这一事实之外,这是完美的,因为" https://my-local-site.company.com"无效且服务人员无法加载。我尝试创建自签名证书并将其添加到受信任的证书中,但Chrome仍然说该站点不受信任,且服务工作者和manifest.json文件无法加载。

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

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

1 个答案:

答案 0 :(得分:0)

解决方案是重新创建证书并确保它具有主题备用名称。我将下面的代码放入批处理文件中并运行它。我不得不首先安装openssl。创建证书后,我将.crt文件添加到受信任的机构证书。然后我在webpack dev server config中引用了.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