我发现我对Google API的请求不会触发service-worker fetch事件。获取静态资源和其他api将按预期触发事件。
演示:https://laurieboyes.github.io/test-gapi-sw/
演示代码:https://github.com/laurieboyes/test-gapi-sw/blob/master/index.html
我还没有找到任何文档表明这是通过设计的。
有人能解释为什么谷歌API请求不触发取回事件?会不会和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源,因此这些调用是从您的service worker的作用域之外进行的(仅在https://laurieboyes.github.io内工作)。
出于安全原因,你的Service Worker没有办法拦截这个通信。