确定fetchEvent的来源

时间:2017-01-15 21:25:10

标签: javascript service-worker

我正在使用服务工作者并监听正在进行的任何网络请求......

我想知道来自<img><script>的请求是否可能以某种方式出现?

sw.js

self.onfetch = event => {
    console.log(event)
}

1 个答案:

答案 0 :(得分:2)

您可以通过Request object访问触发fetch event处理程序的event.request

您可以通过各种不同的方式点击Request,以及其中一种可能足以回答您问题的方法,但您无法通过{{1确切地说明Request<img>负责触发<script>事件的对象。

  • 您可以查看fetch,根据specification,可能是空字符串,或者可能包含&#34; audio&#34;,&#34; font&#34;,&#34; image&#34;,&#34; script&#34;,&#34; style&#34;,&#34; track&#34;,或&#34; video&#34;

  • 您当然可以检查event.request.type,并尝试从中推断出它是对图像,脚本或其他内容的请求。

  • 您可以通过event.request.url查看请求的标题,并查看可能对您有意义的任何标题。

  • 您可以检查event.request.headers.get('x-header-name')set to different values取决于它是导航请求,同源本地资源请求还是跨源请求

这些都不会直接告诉您特定的event.request.mode标记是否负责触发请求,但不清楚为什么知道具体对您的用例是必要的。 (究竟是什么用例?)

如果您确实需要了解有关受控页面上哪些元素提出哪些请求的更多信息,那么在填充<img>属性时可能包含额外的URL查询参数是合适的,然后您可以检查通过服务工作者内的src获取这些参数。