使用提取或新Request()创建的请求具有未定义的主体

时间:2019-06-03 13:39:35

标签: javascript stream request fetch

创建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

我希望可以检查bodyServiceWorker中的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

1 个答案:

答案 0 :(得分:1)

这是用主体构造的POST请求对象。将ReadableStream对象输出到控制台。

如果这在您的控制台中显示“ undefined”,请告诉我。

然后,您可以从caniuse.com网站上查看以下说明:

  
      
  1. 可以通过dom.fetch.enabled在Firefox中启用部分支持   旗。
  2.   
  3. 仅在Chrome和Opera中的ServiceWorkers中可用。

  4.   
  5. 可通过启用以下功能在Window和Workers中的Chrome和Opera中使用   chrome:// flags

  6. 中的“实验性Web平台功能”标志   
  7. Firefox <40不完全符合规范,并且不符合   在获取请求中尊重标签中的相对URI。   https://bugzilla.mozilla.org/show_bug.cgi?id=1161625
  8.   

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

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

console.log(req.body.constructor);