javascript - 在 fetchEvent 中返回请求作为响应

标签 javascript fetch service-worker fetch-api

在服务 worker 内部,如果请求失败,我会尝试返回发出的请求作为响应。看似很简单,但行不通。

事实上,当我尝试返回它时,它返回一个空对象,即使使用 .clone() 也是如此。

代码如下:

fetch(event.request.clone())
      .catch((err) => {
        queue.addRequest(event.request)
        return new Response(JSON.stringify({ deferred: true, ...event.request }), {
          headers: new Headers({ "Content-Type": "application/json" })
        })
      })

它的响应总是:{ deferred: true }。没有别的。

有可能吗?

最佳答案

我刚刚找到获取请求正文并将其返回到我的案例中的方法。

可以使用 .json() 返回请求正文中的 promise 。

看起来像这样:

fetch(event.request.clone())
      .catch((err) => {
        queue.addRequest(event.request)
        return event.request.clone().json().then((requestBody) => {
          return new Response(JSON.stringify({ deferred: true, ...requestBody }), {
            headers: new Headers({ "Content-Type": "application/json" })
          })
        })
      })

关于javascript - 在 fetchEvent 中返回请求作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50252519/

相关文章:

javascript - #js中URL地址中的变量

javascript - 如何使用 fetch API 在 javascript 中下载具有多个 block 的单个文件

node.js - 使用 fetch API 时如何记录实际的请求 header

node.js - 网络推送未知问题,WebPushError "Received unexpected response code"400

javascript - 未生成用于角色扮演游戏 map 的 HTML5 Canvas 视口(viewport)

javascript - jQuery.load() 正在加载页面,但加载页面内的嵌入 javascript 给出了“不允许方法”

javascript - knockout.js 可观察数组,错误 "Uncaught ReferenceError: Unable to process binding "

javascript - 列出 SharePoint 中关注的组和网站?

reactjs - 下载 ByteArray 作为 pdf/在 React 中处理错误

javascript - 如何在域下导航时停止添加未在 Service Worker 中声明的内容