代码之家  ›  专栏  ›  技术社区  ›  Mason

如何要求服务人员忽略与Polymer中特定URL模式匹配的请求?

  •  2
  • Mason  · 技术社区  · 6 年前

    我的应用程序基于 Polymer v2 并使用 Firebase Auth 身份验证服务。实际上,我使用 login-fire 要素为了在移动设备上获得更好的体验,我选择使用重定向登录。

    “网络” 我看到一个包含 /__/auth/handler? 发送模式以请求Google身份验证(例如,如果使用的提供商是Google)。

    启用服务工作者后,将捕获此请求,响应为我的应用程序的登录页面。没有尝试登录,响应来自服务人员,我得到 Network Error 由于超时,来自Firebase API。

    当我在没有服务人员的情况下部署应用程序时,身份验证过程正在运行,我可以访问该应用程序。

    我尝试了多种方法来配置服务人员,使其忽略对URL的所有请求 /auth/ 但我失败了。

    请参阅下面我的配置文件的最新版本。

    软件预制配置。js公司

    module.exports = {
      globPatterns: ['**\/*.{html,js,css,ico}'],
      staticFileGlobs: [
        'bower_components/webcomponentsjs/webcomponents-loader.js',
        'images/*',
        'manifest.json',
      ],
      clientsClaim: true,
      skipWaiting: true,
      navigateFallback: 'index.html',
      runtimeCaching: [
        {
          urlPattern: /\/auth\//,
          handler: 'networkOnly',
        },
        {
          urlPattern: /\/bower_components\/webcomponentsjs\/.*.js/,
          handler: 'fastest',
          options: {
            cache: {
              name: 'webcomponentsjs-polyfills-cache',
            },
          },
        },
        {
          urlPattern: /\/images\//,
          handler: 'cacheFirst',
          options: {
            cacheableResponse: {
              statuses: [0, 200],
            },
          },
        },
      ],
    };
    

    你有更好的解决方案吗?你注意到我错过了什么吗?

    谢谢你的帮助。

    2 回复  |  直到 6 年前
        1
  •  3
  •   dshukertjr    6 年前

    您可以将其添加到sw precache配置中。js文件

      navigateFallbackWhitelist: [/^(?!\/auth\/)/],
    
        2
  •  1
  •   veith    6 年前

    您应该只将应用程序的路径列为白名单。你应该知道这一点。

    所以你没有列入白名单的一切 服务人员提供服务。

    navigateFallbackWhitelist: [/^\/news\//,/^\/msg\//, /^\/settings\//],
    

    在此示例中,仅 news/* , msg/* , settings/* 将交付。

    /auth/* , /api/* ,... 不会被抓到。