服务工作者获取事件不是由Google API请求触发的

时间:2016-11-12 12:19:54

标签: javascript google-api service-worker progressive-web-apps

我发现我对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有关吗?

1 个答案:

答案 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&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来源,因此这些调用是在服务工作者范围之外进行的(仅在https://laurieboyes.github.io范围内有效)。

出于安全原因,您的服务工作者无法拦截该通信。