我在 Service Worker 中的 fetch 中使用此命令
if (event.request.method =='POST') {
event.respondWith(fetch(event.request,{method: 'post'}));
return;
}
但我收到此错误:
未捕获( promise 中)类型错误:无法在“ServiceWorkerGlobalScope”上执行“fetch”:无法使用模式为“navigate”的请求和非空 RequestInit 构造请求。
我应该做什么?
最佳答案
根据您提供的示例代码,您似乎只想在处理 fetch
时实现默认的、假装没有服务工作线程的行为事件POST
请求。
最简单的方法就是不调用 event.respondWith()
首先。调用event.respondWith()
是可选的,如果您不在 fetch
中调用它处理程序,服务 worker 将寻找任何其他已注册的 fetch
处理程序并给他们回应的机会。
如果fetch
都没有事件处理程序响应,然后请求将通过浏览器缓存(取决于请求 header 和缓存状态)或网络来完成,就像没有服务工作人员参与一样。
如果由于某种原因,你确实需要调用`event.respondWith(),但你想模仿默认行为,那么使用
event.respondWith(fetch(event.request));
应该有效,即省略 {method: 'post'}
少量。 event.request
已经知道它是 POST
,因此无需将其他任何内容传递给 fetch()
为了告诉它这一点。
关于javascript - 如何将 POST http 方法与 Service Worker 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37811774/