javascript - 使用 fetch 或 new Request() 创建的请求具有未定义的主体

标签 javascript stream request fetch

创建一个new Request()fetch()会创建一个Request,其中Request.body未定义。

https://developer.mozilla.org/en-US/docs/Web/API/Request 上的文档声明Request有一个body:

引用:“...body:一个简单的 getter,用于公开正文内容的 ReadableStream。”

(new Request('http://example.com/')).body

在 chrome/ff 控制台中给出未定义

通过 POST 示例,您会得到相同的结果:

(new Request('http://example.com/', {
  method: 'POST', 
  body: new ReadableStream({
    pull: function(controller) {
      console.log('pull called!');
      controller.enqueue('Some data...');
    }
  })
})).body

我期望 body 可在 ServiceWorker 中使用,可以检查 Request.body 并采取相关操作在正文上。

我尝试过克隆请求。 我已经在 ServiceWorker 内容和常规 window 上下文中进行了测试。 在 Mac Mojave 上测试了 Chrome 版本 74.0.3729.169(官方版本)(64 位)和 Firefox 66.0.5(64 位)。

注意:

这是 chromium 中的一个已知错误: https://bugs.chromium.org/p/chromium/issues/detail?id=969843 https://bugs.chromium.org/p/chromium/issues/detail?id=688906

最佳答案

编辑:经过两年多的演变,更新此答案。

这是一个用主体构造的 POST 请求对象。这会将 ReadableStream 对象输出到控制台。请注意,.text() 方法检索将解析为请求正文的 Promise。

var init = {
  method: 'POST',
  body: "test=testBody"
};

var req = new Request('https://randycasburn.com', init);

req.text().then(console.log);

关于javascript - 使用 fetch 或 new Request() 创建的请求具有未定义的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428576/

相关文章:

javascript - API 服务限制我或我的巨大 for 循环对于我的 POST 请求来说太快?

node.js - Mongoose 流 JSON 数据

design-patterns - 如何将golang请求中的上下文传递给中间件

javascript - Cheerio 直接子选择器

c - 从文件中读取 7 个变量(每个变量 1 行)并分配给结构变量

asp.net 3.5 请求变量?

javascript - 如何将字符串注入(inject) Android WebView

javascript - 如何使用 ng-repeat 显示来自 API 的所有值,其中我只需要显示所有对象中的一个键值?

javascript - 阅读有关《 Spectre 》的内容。我的代码可能需要进行哪些更改?

javascript - 用路径创建的圆的 SVG 虚线