【问题标题】:How Can I use POST http method with Service Worker?如何在 Service Worker 中使用 POST http 方法?
【发布时间】:2016-06-14 12:16:29
【问题描述】:

我在 Service Worker 的 fetch 中使用这个命令

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

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

但我收到此错误:

未捕获(承诺中)类型错误:无法在“ServiceWorkerGlobalScope”上执行“获取”:无法使用模式为“导航”且非空 RequestInit 的请求构造请求。

我该怎么办?

【问题讨论】:

  • 什么是事件类型?

标签: javascript service-worker


【解决方案1】:

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

最简单的方法是一开始就不要打电话给event.respondWith()。调用event.respondWith() 是可选的,如果你不在fetch 处理程序中调用它,服务工作者将寻找任何其他已注册的fetch 处理程序并给他们一个响应的机会。

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

如果出于某种原因,您确实需要调用 `event.respondWith(),但又想模仿默认行为,则使用

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

应该可以工作,即省略 {method: 'post'} 位。 event.request 已经知道它是 POST,因此无需将其他任何内容传递给 fetch() 即可告诉它。

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 2017-06-14
    • 2018-07-31
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2011-10-21
    • 2018-06-25
    相关资源
    最近更新 更多