localhost上的子域上的服务工作者

时间:2018-01-22 04:53:13

标签: service-worker

我的应用程序基于子域,我正在尝试在我的应用程序中使用服务工作者。

  1. 如何在abc.localhost.com上运行service worker。我了解谷歌在localhost上没有列入白名单的子域名来使用服务工作者但是有解决方法吗?

  2. 我无法让服务工作者在开发模式下工作。

  3. app文件夹中包含应用程序内容。

    如果我在app文件夹中注册service-worker,我无法缓存bower组件,然后app无法脱机工作。

    如果我在app文件夹之外注册服务工作者,那么位于app文件夹中的index.html永远无法在根目录中找到app文件夹之外的servie-worker.js的路径。

    我在index.html中试过这个:

    if( 'serviceWorker' in navigator ) {
        navigator.serviceWorker
          .register( '../service-worker.js' , { scope : ' ' } )
          .then( function( ) {
            console.log('Congratulations!!Service Worker Registered');
          })
          .catch( function( err) {
            console.log(`Aagh! Some kind of Error :- ${err}`);
          });
      } else {
        console.log("SW NOT SUPPORTED");
        //still not supported
      }
    

    但我只得到404。

    我也试过使用绝对路径,即

      .register( '/service-worker.js' , { scope : ' ' } )
    

1 个答案:

答案 0 :(得分:0)

由于服务工作者仅适用于localhosthttps/ssl网址

本地计算机上的服务工作者+子域名的流程是为我的开发环境创建https网址,我使用https://myapp.localhttps://subdomain.myapp.local指向127.0.0.1:

  1. 在本地计算机上安装网络服务器(Nginx / Apache / etc)
  2. 使用该网络服务器设置本地应用
  3. 编辑本地域主机配置的/etc/hosts文件(myapp.local,subdomain.myapp.local)
  4. 为该网络服务器设置OpenSSL(现在我们可以使用https
  5. 信任您的开放证书(示例参考为mac https://tosbourn.com/getting-os-x-to-trust-self-signed-ssl-certificates,未经过测试,只是在谷歌搜索,忘记了我的真实参考)所以您可以在浏览器上使用绿色ssl访问。
  6. 喝咖啡。