javascript - 如何将 POST http 方法与 Service Worker 一起使用?

标签 javascript service-worker

我在 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/

相关文章:

javascript - 如何使用 jquery 查找与本地化相关的日期格式

javascript - 我如何以某种方式定位此文本?

javascript - 服务 worker : how to do a synchronous queue?

javascript - Service Worker 安装成功后更新 UI

javascript - Node.js EPIPE 错误

php - 未捕获的语法错误 : Unexpected token ILLEGAL

javascript - 试图理解 array.IndexOf() 在 JavaScript 中的功能

caching - 有没有办法缓存服务 worker 中定义的文件夹/路径的所有文件?

push-notification - 我们可以在 ios serviceworker 上运行 firebase 实时监听吗?

javascript - 每次播放音频对象时 Chrome 浏览器 : GET favicon. ico