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&...&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 无法拦截该通信。
我发现我对 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&...&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 无法拦截该通信。