Google API 请求未触发服务工作者获取事件

Service worker fetch event not triggered by Google API requests

我发现我对 Google API 的请求不会触发服务工作者获取事件。获取静态资源和其他 API 会按预期触发事件。

演示:https://laurieboyes.github.io/test-gapi-sw/

演示代码:https://github.com/laurieboyes/test-gapi-sw/blob/master/index.html

我找不到任何表明这是设计使然的文档。

有谁能解释为什么 Google API 请求没有触发 fetch 事件?可能与 oAuth 有关吗?

您可以检查您的 DOM 并注意到 Google 的 OAuth 库将几个不可见的 <iframe> 注入您的页面,例如:

<iframe name="oauth2relay368346125" id="oauth2relay368346125" 
  src="https://accounts.google.com/o/oauth2/postmessageRelay?parent=https%3A%2F%2Flaurieboyes.github.io&amp;...&amp;forcesecure=1"
  tabindex="-1" aria-hidden="true" 
  style="width: 1px; height: 1px; position: absolute; top: -100px;">
</iframe>

这些 <iframe> 用于与 Google API 的所有网络通信。请注意 <iframe> 仅来自 https://accounts.google.com origin, so these calls are made from outside of the scope of your service worker (that works within https://laurieboyes.github.io

出于安全原因,您的 Service Worker 无法拦截该通信。