gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:32:39 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com