我们如何检查请求的响应是否来自Service Worker

卡罗尔·克莱佩奇(Karol Klepacki)

在HTTP状态代码旁边的Google Chrome控制台中,Request我们有info (from ServiceWorker)

可以Request知道它Response来自ServiceWorker吗?date比较Response Headers呢?

杰夫·波斯尼克

按照设计,通过a返回FetchEvent#respondWith()的响应与没有服务人员参与的响应是无法区分的。无论我们谈论的响应是通过获得的适用XMLHttpRequestwindow.fetch()或者设置src=一些元素属性。

如果您要区分哪些响应是通过服务人员参与而产生的,这一点很重要,那么我能想到的最简洁的方法是将HTTP标头显式添加到Response馈入对象中FetchEvent#respondWith()然后,您可以从受控页面检查该标题。

但是,取决于您的服务工作者如何获取它Response,这可能会有些棘手/很棘手,除非您有强大的用例,否则我不能说我建议这样做。这是一种(再次,不建议使用)方法:

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了的Response被退回fetch()。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们如何检查请求的响应是否来自Service Worker

来自分类Dev

PHP-如何检查请求是否针对JS worker

来自分类Dev

Service Worker 实现架构?

来自分类Dev

GAE 上的 Service Worker

来自分类Dev

Service Worker 缓存太多

来自分类Dev

hgearman worker 是如何工作的?

来自分类Dev

我们是否需要修改spark集群的worker上的配置?

来自分类Dev

如何屏蔽 Google Service Worker?

来自分类Dev

如何在Service Worker中访问Web Worker?

来自分类Dev

如何使用Angular 的safety-worker.js 卸载Service Worker?

来自分类Dev

我们如何在kubernetes worker节点中增加临时存储的大小

来自分类Dev

Polymer Service Worker 预缓存

来自分类Dev

忽略Service Worker中的Ajax请求

来自分类Dev

Service Worker 和 Web Worker 之间的技术差异

来自分类Dev

检查用户是否通过Service Worker重新联机

来自分类Dev

我是否需要Web Worker来循环AJAX请求?

来自分类Dev

如何停止Azure Worker角色

来自分类Dev

如何响应Service Worker中导航的获取事件?

来自分类Dev

如何在Service Worker中发出JSONP请求?

来自分类Dev

如何在Service Worker中编辑请求URL?

来自分类Dev

如何在Service Worker中保留数据

来自分类Dev

如何告诉Service Worker缓存哪些文件

来自分类Dev

我们可以运行kubectl form worker / minion节点吗?

来自分类Dev

在Web Worker中发出HTTP请求

来自分类Dev

Service Worker和透明缓存更新

来自分类Dev

Angular2的Service Worker推送通知

来自分类Dev

在Service Worker中获取API错误

来自分类Dev

使用Service Worker预缓存静态文件

来自分类Dev

Angular Service Worker脱机显示错误