我想测试服务人员,但是我有一个虚拟主机设置,但似乎无法在本地主机上启用https。
每当尝试在本地主机上注册服务工作者时,如何将我的本地虚拟主机URL列入白名单以测试服务工作者?Chrome表示必须启用https才能启用Service Worker。我至少在本地测试中如何才能克服此限制。
我想测试服务人员,但是我有一个虚拟主机设置,但似乎无法在本地主机上启用https。
每当尝试在本地主机上注册服务工作者时,如何将我的本地虚拟主机URL列入白名单以测试服务工作者?Chrome表示必须启用https才能启用Service Worker。我至少在本地测试中如何才能克服此限制。
Answers:
通常,您需要通过HTTPS服务页面和服务工作者脚本,以便使用服务工作者。基本原理在“ 首选强大功能的安全来源”中进行了描述。
为了方便本地开发,HTTPS要求存在一个例外:如果您通过http://localhost[:port]
或通过访问页面和服务工作者脚本http://127.x.y.z[:port]
,则应该启用服务工作者,而无需采取任何其他措施。
在最新版本的Chrome中,您可以通过解答此问题chrome://flags/#unsafely-treat-insecure-origin-as-secure
,并通过本地开发来解决此问题。
Firefox 通过该设置提供了类似的功能devtools.serviceWorkers.testing.enabled
。
请注意,此功能仅用于促进原本无法进行的测试,并且在为网站的生产版本提供服务时,您应始终计划使用HTTPS。不要要求真正的用户完成启用这些标志的步骤!
devtools.serviceWorkers.testing.enabled
。
如果您想调试插入式移动设备的服务人员以进行渐进式Web应用程序的真实行为测试,则ssl chrome启动选项无济于事,您绝对不需要购买证书。
@ chris-ruppel提到了安装代理软件,但实际上有一种使用端口转发的简便方法:
假设您使用Chrome连接并调试设备:
完成此操作后,您可以在移动设备上调用URL“ http:// localhost:8080 ”,并且将在实际PC /测试服务器上通过“ localhost:80”进行回答。与服务人员完美协作,就好像您的本地计算机在移动设备上运行一样。
只要您记得在移动设备上使用未特权的端口,即可用于多个端口转发和不同的目标域。看截图:
该信息的来源是google远程设备文档:https : //developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server (但截至2017年4月,阅读此内容尚不清楚简单的答案)
我经常想在真实设备上进行调试和测试。我想出的一种方法涉及在本地开发期间通过Charles Proxy路由电话的网络流量。与所有特定于Chrome的解决方案不同,它可与手机上的任何浏览器一起使用。
localhost
现在,通过我的移动设备进行访问可以使Service Worker进行注册和测试。在我的情况下,测试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证书
正如Jeff在第一个响应中提到的那样,您不需要在localhost级别使用https即可测试Service Workers。只要访问不使用HTTPS的localhost域,服务工作者就可以注册并正常工作。
一旦您的应用程序在localhost上进行了测试,并且想要了解它如何与https一起使用,那么最简单的方法就是将您的应用程序上传到GitHub。您可以免费创建公共域(并使用HTTPS!)。
这里是说明:https : //pages.github.com/
如果要在无法在本地主机上运行Web服务器的客户端设备上测试服务工作者,则常规技术如下:
但这说起来容易做起来难。在2016年11月的Reddit AMA上,一个让我们加密的代表承认私有LAN上的HTTPS“是一个非常棘手的问题,我认为到目前为止,还没有人提出令人满意的答案。”
为计算机提供主机名的常用方法包括为其提供一个稳定的内部IP地址,而不是每天或每次对Internet网关设备重新加电时都会更改的主机名。您将需要配置网络上的DHCP服务器(通常是网关中的DHCP服务器),以设置将特定的专用地址(通常在10/8
或之内192.168/16
)与开发工作站的以太网卡的MAC地址相关联的“保留” 。为此,请阅读网关的手册。
既然您的开发工作站具有稳定的IP地址,就可以在时间/金钱上进行权衡。如果您愿意学习高级DNS和OpenSSL用法,并在打算测试的所有设备上安装根证书:
如果您无法添加根证书或控制本地DNS,例如计划使用他人拥有的设备(BYOD)或使用更多锁定用户不允许用户添加受信任的根证书的浏览器进行测试,例如主要视频游戏机,则需要一个完全限定的域名(FQDN):
A
记录指向您的开发工作站的专用IP地址。这为您的开发工作站提供了FQDN。dns-01
挑战的ACME客户端)从Let's Encrypt证书颁发机构获取此FQDN的证书。