提问人:Neeraj-Kumar-Coder 提问时间:6/28/2022 最后编辑:VLAZNeeraj-Kumar-Coder 更新时间:7/23/2022 访问量:1176
ReactJS fetch api 中缺少用户代理错误
User Agent missing error in ReactJS fetch api
问:
我在 ReactJS 中使用新闻 API 通过 fetch API 获取新闻。
代码片段
const url = `https://newsapi.org/v2/top-headlines?country=in&category=${this.props.category}&pageSize=${this.state.pageSize}&page=${this.state.page}`;
let data = await fetch(url);
但是当我在本地主机上运行它时,它给出了一个错误 400 说:
{status: 'error', code: 'userAgentMissing', message: 'Please set your User-Agent header to identify your application. Anonymous requests are not allowed.'}
当我在 Stack Overflow 上搜索相同的内容时,我在这里得到了一个类似问题的链接:
然后我在 fetch API 的参数中添加了标头:User-Agent
代码片段
headers = new Headers({
"X-Api-Key": this.apiKey,
"User-Agent": navigator.userAgent
});
const url = `https://newsapi.org/v2/top-headlines?country=in&category=${this.props.category}&pageSize=${this.state.pageSize}&page=${this.state.page}`;
let data = await fetch(url, {
headers: this.headers
});
但它仍然显示相同的错误:
{status: 'error', code: 'userAgentMissing', message: 'Please set your User-Agent header to identify your application. Anonymous requests are not allowed.'}
此错误要求在请求标头中输入“User-Agent”,但它已经存在!当我查看 chrome 浏览器的网络部分时。
那么,问题到底出在哪里?以及如何解决这个问题?
答:
1赞
rcart
7/23/2022
#1
我也有类似的问题。到目前为止,我已经能够从Mozilla开发人员网站传入一个Web浏览器User-Agents。
function webCall(url,method,headers,postBody,callBack){
/* build options */
var options = {
method: method,
uri: url,
headers: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59',
body: postBody
}
...
};
这仍在开发中;但是,我能够从我的 newsapi.org 拉中返回结果。
编辑:作为参考,我正在使用旧的“请求”npm 库(遗留要求)。所以我是这样提出我的要求的:
request(options, function handleResponse(err, response, body){
var errMessage = null;
var headers = {};
if(err) {
errMessage='HTTP ERROR: ' + err;
}
else {
headers = response.headers;
if(response.statusCode!=200){
errMessage='HTTP ' + response.statusCode + ' ERROR: ' + err;
}
}
});
评论
0赞
Neeraj-Kumar-Coder
7/23/2022
那么我怎样才能从链接中获取数据。你能给我看一个示例代码吗(就像问题中写的代码一样)。我无法从你的回答中弄清楚该怎么做。
评论