我正在尝试使用带有API密钥的Ajax GET请求从我的学校API获取数据,但我仍然收到401错误消息。我已将API密钥包含在标头中,但似乎无效。
到目前为止,这是我的代码;
class App extends Component {
constructor(){
super();
this.state = {
todos:[]
}
}
getTodos(){
$.ajax({
type: "GET",
url: 'https://opendata.seamk.fi/r1/reservation/building/2',
dataType:'json',
headers: {
Authorization: "API_KEY"
},
cache: false,
success: function(data){
this.setState({todos: data}, function(){
console.log(this.state);
});
}.bind(this),
error: function(xhr, status, err){
console.log(err);
}
});
}
componentWillMount(){
this.getTodos();
}
componentDidMount(){
this.getTodos();
}
render() {
return (
<Titles />
<Todos todos={this.state.todos}/>
);
}
}
export default App;
控制台消息;
答案 0 :(得分:2)
听起来你需要使用基本身份验证。
您应该可以通过this:
之类的操作将您的凭据添加到您的请求中$.ajax({
type: 'GET',
url: 'url',
dataType: 'json',
//whatever you need
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', make_base_auth(user, password));
},
success: function () {});
});
function make_base_auth(user, password) {
var tok = user + ':' + password;
var hash = btoa(tok);
return 'Basic ' + hash;
}
此外,我建议您为http请求使用Axios之类的内容。你真的不需要JQuery with react和axios基于fetch但更好地处理错误。