首页 > 解决方案 > 从 Service Worker 获取重定向 API 调用

问题描述

这是一个非常烦人的问题。我在我的应用程序中使用第三方登录。当用户通过第三方登录时,它会将 api 调用重定向到服务器。

例如:/api/signin/github?code=test&state=test

出于某种奇怪的原因,这个 API 调用是从服务工作者获取的,而不是在处理登录逻辑的服务器上。

前任:

在此处输入图像描述

标签: service-workerprogressive-web-apps

解决方案


如果没有看到您的服务工作者的fetch事件处理程序,很难确切地说出是什么代码对此负责。

但是,一般来说,如果您想告诉服务工作者永远不要响应某些 URL,您可以避免event.respondWith(...)在它们触发fetch. 有很多方法可以避免这样做,但早期return很简单:

self.addEventListener('fetch', (event) => {
  const url = new URL(event.request.url);
  if (url.pathname === '/api/signin/github') {
    // By returning without calling event.respondWith(),
    // the request will be handled by the normal browser
    // network stack.
    return;
  }

  // Your fetch event response generation logic goes here.
  event.respondWith(...);
});

推荐阅读