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