2016-06-14 105 views
1

我使用这个命令中获取的服务人员如何在Service Worker中使用POST http方法?

if (event.request.method =='POST') { 

     event.respondWith(fetch(event.request,{method: 'post'})); 
     return; 
    } 

,但我得到这个错误:

未捕获的(以诺)类型错误:未能执行“取”上“ServiceWorkerGlobalScope”:不能建立一个请求使用模式为“导航”的请求和非空的RequestInit。

我该怎么办?

+0

什么类型的事件? – sp1rs

回答

2

根据您提供的示例代码,当您处理POST请求的fetch事件时,您似乎只想实现默认的假装类似于服务人员的行为。

最简单的方法是首先不要致电event.respondWith()。调用event.respondWith()是可选的,如果您不在fetch处理程序中调用它,服务人员将查找任何其他已注册的fetch处理程序并给它们一个回应的机会。

如果fetch事件处理程序都不响应,那么请求将通过浏览器缓存(取决于请求标头和缓存状态)或网络来完成,就好像没有服务工作者参与一样。

如果由于某种原因,你真的需要调用`event.respondWith(),但要模仿的默认行为,然后使用

event.respondWith(fetch(event.request)); 

应该工作,即离开了{method: 'post'}位。 event.request已经知道它是POST,所以没有必要将其他任何东西传递给fetch()以告知它。

相关问题