创建new Request()
或fetch()
会创建一个Request
未定义的Request.body
。
https://developer.mozilla.org/en-US/docs/Web/API/Request上的文档指出Request
有一个body
:
语录:“ ... body:用于暴露ReadableStream
主体内容的简单吸气剂。”
(new Request('http://example.com/')).body
chrome / ff控制台中的给出undefined
。
使用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
,并根据body
采取措施。
我尝试克隆请求。
我已经在ServiceWorker
内容和常规window
上下文中进行了测试。
在Mac Mojave上测试了Chrome版本74.0.3729.169(正式版本)(64位)和Firefox 66.0.5(64位)。
这是铬的已知错误: https://bugs.chromium.org/p/chromium/issues/detail?id=969843 https://bugs.chromium.org/p/chromium/issues/detail?id=688906
答案 0 :(得分:1)
这是用主体构造的POST请求对象。将ReadableStream对象输出到控制台。
如果这在您的控制台中显示“ undefined”,请告诉我。
然后,您可以从caniuse.com网站上查看以下说明:
- 可以通过dom.fetch.enabled在Firefox中启用部分支持 旗。
仅在Chrome和Opera中的ServiceWorkers中可用。
- 中的“实验性Web平台功能”标志
可通过启用以下功能在Window和Workers中的Chrome和Opera中使用 chrome:// flags
- Firefox <40不完全符合规范,并且不符合 在获取请求中尊重标签中的相对URI。 https://bugzilla.mozilla.org/show_bug.cgi?id=1161625
var init = {
method: 'POST',
body: "test=testBody"
};
var req = new Request('https://randycasburn.com', init);
console.log(req.body.constructor);