【发布时间】:2016-02-25 20:54:17
【问题描述】:
我对 service worker 的策略是,如果 url 匹配某种特定格式,那么只有 service worker 应该拦截它,否则浏览器应该像往常一样处理它,
对于所有情况,我都使用 evt.respondWith() 来拦截它并提供自定义响应,但是如果 url 与任何格式都不匹配,我该怎么办
我有几个选项,所有选项都有效,但我不确定哪一个在逻辑上是正确的
1) 什么都不做,意味着我有 if 条件来检查 fetch 方法中定义的每个格式,但如果它们不匹配,我什么都不做,我没有任何“else”条件。在这种情况下,浏览器正在获取页面正常,但我不确定它是否正确,实际发生了什么,cookie 是否通过?
2) 在 else 方法中我有 fetch(event.request, { credentials: 'include' });
这也有效,我不确定是否需要在此处包含凭证子句,据我了解,不是服务工作者,而是浏览器在此处处理请求,因此它将自动包含 cookie。如果我在这里错了,请纠正我。
3)event.respondWith(fetch(event.request, { credentials: 'include' }));
这也有效,我认为因为我使用的是 event.respondWith,所以我需要明确地包含凭证(我再次不确定)。但我怀疑我是否需要在这里使用 event.respondWith。我对event.respondWith的了解是,只有当我们想为获取事件提供自定义响应时才使用它。由于我们希望按原样处理这些请求,我们是否需要在这里使用event.respondWith?
我所有的困惑都来自我对event.respondWith() 缺乏了解,有人可以解释一下,我应该什么时候使用
吗?
【问题讨论】: