提问者:小点点

通过HTTP测试服务工作者的选项


我想测试服务工作者,但我有一个虚拟主机设置,我似乎无法在本地主机上启用 https。

每当我尝试在本地主机上注册服务工作者时,我如何将本地虚拟主机url列入白名单以测试服务工作者?Chrome表示需要https才能启用服务工作者。至少在本地测试中,我如何才能通过这一限制。


共3个答案

匿名用户

通常,您需要通过HTTPS为页面和服务工作者脚本提供服务,以便使用服务工作者。其基本原理在Prefer Secure Origins For Powerful New Features中进行了描述。

为了促进本地开发,HTTPS要求有一个例外:如果您通过<code>访问页面和服务工作者脚本http://localhost[:端口],或通过http://127.x.y.z[:port],则应启用服务工作者,而无需执行任何进一步操作。

在最新版本的Chrome中,您可以通过<code>在本地开发过程中解决这一要求chrome://flags/#unsafely-将不安全的来源视为安全的,如本答案所述。

Firefox 通过 devtools.serviceWorkers.testing.enabled 设置提供了类似的功能。

请注意,此功能只是为了方便测试,否则将无法进行测试,并且您应该始终计划在为网站的生产版本提供服务时使用HTTPS。不要要求真正的用户完成启用这些标志的步骤!

匿名用户

如果您想调试插入式移动设备的服务人员,以便对渐进式web应用程序进行真正的行为测试,ssl chrome启动选项没有帮助,而且您绝对不需要购买证书。

@chris ruppel提到安装代理软件,但实际上有一种更简单的方法可以使用端口转发:

假设您使用Chrome连接并调试设备:

  • 在Chrome开发工具远程设备中打开设置并添加端口转发规则。
  • 如果您的localhost设置正在localhost:80上运行,
  • 只需添加一个规则“设备端口8080”(可以是任何无特权端口

完成后,您可以在移动设备上调用URL“http://localhost:8080”,它将由实际PC/测试服务器上的“localhost:80”回答。与服务人员完美配合,就像它是在您的手机上运行的本地机器一样。

该信息的来源是谷歌远程设备文档:https://developers . Google . com/web/tools/chrome-dev tools/remote-debugging/local-server(但截至2017年4月,从其中读出这个简单的答案还不是很清楚)

匿名用户

我经常想在真实设备上进行调试和测试。我想出的一种方法涉及在本地开发期间通过Charles Prooxy路由手机的网络流量。与所有特定于 Chrome 的解决方案不同,这适用于手机上的任何浏览器。

  • 在我的笔记本电脑上运行Charles(它也通过Service Worker为我的网站提供服务)。查尔斯运行后,记下第2步的IP/端口。
  • 配置移动设备以使用我的笔记本电脑作为代理。
    • 对于Android,只需在设置中点击并按住您的WiFi