Javascript 如何对服务工作者使用POST http方法?
我在fetchin服务Worker中使用此命令Javascript 如何对服务工作者使用POST http方法?,javascript,service-worker,Javascript,Service Worker,我在fetchin服务Worker中使用此命令 if (event.request.method =='POST') { event.respondWith(fetch(event.request,{method: 'post'})); return; } 但我得到了这个错误: 未捕获(承诺中)TypeError:未能在“ServiceWorkerGlobalScope”上执行“fetch”:无法使用模式为“navigate”的请求和非空的Reque
if (event.request.method =='POST') {
event.respondWith(fetch(event.request,{method: 'post'}));
return;
}
但我得到了这个错误:
未捕获(承诺中)TypeError:未能在“ServiceWorkerGlobalScope”上执行“fetch”:无法使用模式为“navigate”的请求和非空的RequestInit构造请求
我该怎么办?根据您提供的示例代码,您似乎只想实现默认值,在处理
POST
请求的获取事件时,假装没有服务工作者行为
最简单的方法是首先不调用event.respondWith()
。调用event.respondWith()
是可选的,如果您没有在fetch
处理程序中调用它,服务人员将查找任何其他已注册的fetch
处理程序,并给它们一个响应的机会
如果fetch
事件处理程序均未响应,则请求将通过浏览器缓存(取决于请求头和缓存状态)或网络完成,就像没有服务人员参与一样
如果出于某种原因,确实需要调用`event.respondWith(),但希望模拟默认行为,则使用
event.respondWith(fetch(event.request));
应该有效,即省略{method:'post'}
位。event.request
已经知道它是一个POST
,因此不需要向fetch()
传递任何其他内容来告诉它。事件的类型是什么?