我发现我对Google API的请求不会触发service-worker fetch事件。静态资源和其他API的获取会按预期触发事件。
演示:https://laurieboyes.github.io/test-gapi-sw/
演示代码:https://github.com/laurieboyes/test-gapi-sw/blob/master/index.html
我无法找到任何证明这是设计的文件。
是否有人能够解释为什么Google API请求不会触发fetch事件?这可能与oAuth有关吗?
答案 0 :(得分:3)
您可以检查您的DOM并注意到Google的OAuth lib会在您的网页中插入几个不可见的<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来源,因此这些调用是在服务工作者范围之外进行的(仅在https://laurieboyes.github.io范围内有效)。
出于安全原因,您的服务工作者无法拦截该通信。