【发布时间】:2021-06-29 02:20:28
【问题描述】:
我正在使用 react.js 和 musixmatch api 构建一个简单的歌词查找器应用程序。当我请求 api 时,我在 consoleError: Request failed with status code 403 at createError (createError.js:16) at settle (settle.js:17) at XMLHttpRequest.handleLoad (xhr.js:62) 中收到此错误
这是我的 componentDidMount() 函数
import React, { Component } from 'react';
import axios from 'axios';
const Context = React.createContext();
export class Provider extends Component {
state = {
track_list: [],
heading: "Top 10 Tracks"
}
componentDidMount() {
axios.get(
`https://cors-anywhere.herokuapp.com/https://api.musixmatch.com/ws/1.1/chart.tracks.get?chart_name=top&page=1&page_size=5&country=it&f_has_lyrics=1&apikey=${
process.env.REACT_APP_MM_KEY}`
)
.then(res => console.log(res.data))
.catch(err => console.log(err));
}
render() {
return (
<Context.Provider value={this.state} >
{this.props.children}
</Context.Provider>
);
}
}
export const Consumer = Context.Consumer;
【问题讨论】:
-
当我使用 api 密钥在浏览器中输入 url 时,它可以工作。我也尝试直接输入 api 密钥(没有 cors-anywhere)但我仍然得到错误。
-
我相信 cors-anywhere 服务器正在限制访问,在这种情况下您将不得不运行自己的服务器。
标签: javascript reactjs axios