gpt4 book ai didi

javascript - fetch 给出一个空的响应主体

转载 作者:IT王子 更新时间:2023-10-29 03:07:22 28 4
gpt4 key购买 nike

我有一个 react/redux 应用程序,我正在尝试向服务器发出一个简单的 GET 请求:

fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
}).then((response) => {
console.log(response.body); // null
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('request failed', error); });

问题是 .then() 函数中的响应主体是空的,我不确定为什么。我在线检查了示例,看起来我的代码应该可以工作,所以我显然在这里遗漏了一些东西。问题是,如果我检查 Chrome 开发工具中的网络选项卡,就会发出请求并且我会收到我正在寻找的数据。

任何人都可以照亮这个吗?

编辑:

我尝试转换响应。

使用 .text():

fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.text())
.then((response) => {
console.log(response); // returns empty string
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('request failed', error); });

.json():

fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.json())
.then((response) => {
console.log(response.body);
return dispatch({
type: "GET_CALL",
response: response.body
});
})
.catch(error => { console.log('request failed', error); }); // Syntax error: unexpected end of input

查看 chrome 开发工具:

enter image description here

最佳答案

我刚遇到这个。如本answer所述,使用 mode: "no-cors" 会给你一个不透明的响应,它似乎不会在正文中返回数据。

opaque: Response for “no-cors” request to cross-origin resource. Severely restricted.

在我的例子中,我使用的是 Express。安装后 cors for Express并配置它并删除 mode: "no-cors",我得到了 promise 。响应数据将在 promise 中,例如

fetch('http://example.com/api/node', {
// mode: 'no-cors',
method: 'GET',
headers: {
Accept: 'application/json',
},
},
).then(response => {
if (response.ok) {
response.json().then(json => {
console.log(json);
});
}
});

关于javascript - fetch 给出一个空的响应主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36840396/

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