respondWith注意事项

respondWith

拦截请求并允许Worker发送自定义响应。

respondWith方法仅在worker域(WorkerGlobalScope)中有效
使用Module Worker格式,直接从处理程序返回一个Response

如果fetch事件处理器没有调用respondWith方法,那么运行时将会将该事件传播到下一个注册为fetch事件的处理器中。因此,添加多个fetch事件的处理器是可行的,但是不推荐这样做。

如果没有任何的fetch事件处理器来显式地调用respondWith方法,那么运行时会将该请求导向源位置,就像不存在Worker逻辑一样。
然而,如果没有源或者Worker本身就是你的源服务器,那么你必须调用respondWith来获得有效的响应。


// Format: Service Worker
addEventListener('fetch', event => {
  let { pathname } = new URL(event.request.url);

  // Allow "/ignore/*" URLs to hit origin
  if (pathname.startsWith('/ignore/')) return;

  // Otherwise, respond with something
  event.respondWith(handler(event));
});

参考链接: https://developers.cloudflare.com/workers/runtime-apis/fetch-event/#respondwith

posted @ 2022-04-06 17:32  西河  阅读(36)  评论(0编辑  收藏  举报