用于通过 HTTP 测试服务工作线程的选项
我想测试服务工作线程,但我有一个虚拟主机设置,我似乎无法在本地主机上启用https。
如何将本地虚拟主机 URL 列入白名单,以便在尝试在本地主机上注册服务工作线程时测试服务工作线程?Chrome表示,需要https才能启用服务工作者。我怎样才能通过这个限制,至少在本地测试。
我想测试服务工作线程,但我有一个虚拟主机设置,我似乎无法在本地主机上启用https。
如何将本地虚拟主机 URL 列入白名单,以便在尝试在本地主机上注册服务工作线程时测试服务工作线程?Chrome表示,需要https才能启用服务工作者。我怎样才能通过这个限制,至少在本地测试。
通常,您需要通过 HTTPS 同时提供页面和服务工作线程脚本,以便使用服务工作线程。基本原理在 Prefer Secure Origins for Powerful New Features 中进行了描述。
为了便于本地开发,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。不要要求真实用户完成启用这些标志的步骤!
如果要调试插入式移动设备的服务工作线程以对渐进式 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月,阅读此简单答案并不是很清楚)