我想测试服务工作者,但我有一个虚拟主机设置,我似乎无法在localhost上启用https.
每当我尝试在localhost上注册服务工作者时,如何将本地虚拟主机URL列入白名单以测试服务工作者?Chrome表示https是启用服务工作者所必需的.如何至少在本地测试中超越此限制.
通常,您需要通过HTTPS为您的页面和服务工作者脚本提供服务,以便使用服务工作者.理由是在Prefer Secure Origins For Powerful New Features中描述的.
对于促进本地开发的HTTPS要求有一个例外:如果您通过http://localhost[:port]
或通过访问您的页面和服务工作者脚本http://127.x.y.z[:port]
,那么应该启用服务工作者而无需任何进一步的操作.
如果由于某种原因,您需要通过除chrome://flags/#unsafely-treat-insecure-origin-as-secure
或之外的主机名访问本地Web服务器devtools.serviceWorkers.testing.enabled
,或者如果您需要在不支持HTTPS的远程Web服务器上进行测试,则可以使用手动解决方法.它涉及通过命令行启动Chrome,并使用http://localhost[:port]
和http://127.x.y.z[:port]
标志.
此错误包含更多详细信息,包括如何启动Chrome 的完整示例.
Firefox 通过设置提供类似的功能chrome://flags/#unsafely-treat-insecure-origin-as-secure
.
请注意,此功能仅用于促进无法进行的测试,并且在提供站点的生产版本时应始终计划使用HTTPS.不要让真实用户完成启用这些标志的步骤!
如果您想调试插件移动设备的服务工作者以进行渐进式Web应用程序的真实行为测试,则ssl chrome启动选项无效,您绝对不需要购买证书.
@ chris-ruppel提到安装代理软件,但实际上有一种更简单的方法使用端口转发:
假设您使用Chrome连接并调试设备:
在Chrome开发工具"远程设备"中打开"设置"并添加"端口转发"规则.
如果您的localhost安装程序在localhost:80上运行,
只需添加规则"设备端口8080"(可以是任何无特权的端口> 1024)
和本地地址"localhost:80"(或mytestserver.sometestdomainwithoutssl.company:8181或其他)
执行此操作后,您可以在移动设备上调用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的解决方案不同,这适用于手机上的任何浏览器.
在我的笔记本电脑上运行Charles(也可以通过Service Worker为我的网站服务).Charles运行后,请注意步骤2的IP /端口.
配置移动设备以将我的笔记本电脑用作代理.
对于Android,只需在设置> 修改网络 > 高级设置 > 代理中点击并按住WiFi即可.使用手动设置IP /端口.
对于iOS,请单击(i)图标> HTTP代理部分.选择手动,然后设置IP /端口.
localhost
现在,在我的移动设备上访问可以让服务工作者进行注册和测试.