我正在尝试创建一个网站,在那里我将消费一个web并在站点上显示“用户”。我有一个api-键,我必须把它作为"x- API-key“放在标题中。
这是我目前的代码:
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
isLoaded: false,
items: []
}
}
componentDidMount() {
const myHeaders = new Headers();
myHeaders.append('x-api-key', 'KEY_HERE');
myHeaders.append('Content-Type', 'application/x-www-form-urlencoded');
myHeaders.append('cache-control', 'no-cache')
fetch('URL_HERE', {
method: 'GET',
headers: myHeaders,
async: true,
})
.then(res => res.json())
.then(json => {
this.setState({
isLoaded: true,
items: json,
})
});
}
render() {
var{isLoaded, items} = this.state;
if(!isLoaded) {
return <div>Loading...</div>;
}
else{
return (
<div className="App">
<ul>
{items.map(item => (
<li key={item.id}>
Name: {item.name} | Id:{item.id}
</li>
))};
</ul>
</div>
);
}
}
}
导出默认应用程序;
问题是,我在控制台中得到了这些错误消息:
未能加载http://URL/users:对飞行前的响应不具有HTTP状态。 Uncaught (承诺) TypeError:未能获取
当我试着给邮递员打电话时,我成功了。因此,我认为问题在于api-key没有在标头中正确地实现。
感谢您的帮助,如果您还有什么需要知道的,请告诉我!
发布于 2018-10-19 02:27:06
您需要从代码中删除下面一行,然后需要处理服务器端的OPTIONS方法。
myHeaders.append('cache-control', 'no-cache')
您将得到此错误,因为您正在添加一个带有“x key”的标头。你让请求变得复杂了。这要求浏览器发出飞行前选项请求,以请求发送复杂请求的权限。
您要发出请求的服务器正在响应,表示不允许选项请求访问该URL
您将需要正确地修改服务器和处理选项方法,以便它能够适当地响应飞行前CORS请求。
您不会在邮递员中得到这个错误,因为邮递员不需要提出飞行前请求。
发布于 2018-10-18 03:44:00
如果要使用api获取数据,请尝试使用axios。它也可以在客户端和服务器端使用,也非常容易使用。这是您的指南的GitHub回购。https://github.com/axios/axios
https://stackoverflow.com/questions/52865826
复制相似问题