在 Google Chrome 控制台中 HTTP 状态代码旁边Request
我们有信息(from ServiceWorker)
.
Can Request
以某种方式意识到Response
来自 ServiceWorker?比较date
from Response Headers
maybe?
根据设计,响应通过FetchEvent#respondWith()
与没有服务人员参与的响应没有区别。无论我们正在讨论的响应是否是通过以下方式获得的,这都适用XMLHttpRequest
, window.fetch()
,或设置src=
某些元素上的属性。
如果区分哪些响应是通过服务工作者参与发起的对您来说很重要,那么我能想到的最干净的方法是显式地将 HTTP 标头添加到Response
被送入的对象FetchEvent#respondWith()
。然后,您可以从受控页面检查该标头。
但是,取决于您的 Service Worker 如何获取其Response
,这可能有点棘手/hacky,我不能说我推荐它,除非你有一个强大的用例。以下是(再次强调,不推荐)方法可能的样子:
event.respondWith(
return fetch(event.request).then(function(response) {
if (response.type === 'opaque') {
return response;
}
var headersCopy = new Headers(response.headers);
headersCopy.set('X-Service-Worker', 'true');
return response.arrayBuffer().then(function(buffer) {
return new Response(buffer, {
status: response.status,
statusText: response.statusText,
headers: headersCopy
});
});
})
)
如果你返回一个不透明的Response
,除了直接将其返回到页面之外,您不能对其执行太多操作。否则,它会将一堆东西复制到一个新的中Response
有一个X-Service-Worker
标头设置为true
。 (这是一种迂回的方法来解决您不能直接修改headers
of the Response
由返回fetch()
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)