创建一个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/