我正在尝试使用TMDB API创建一个简单的应用程序。我正在使用Axios发出HTTP请求。
我从检索最近的20部电影开始,到目前为止效果很好,显示没有问题。
当我尝试获取单个电影的详细信息时,问题就开始了。搜索了一些解决方案,但似乎总是出现相同的错误:“状态7:无效的API密钥(或状态401)”。
这是我的Axios配置:
const BASE_URL = 'http://localhost:3000/';
const HEADERS = {
'Content-Type': 'application/json',
Accept: 'application/json',
};
const PARAMS = {
params: {
api_key: 'xxxxxxxxxxxxxxxxxxxxxxxx',
}
};
const client = axios.create({
BASE_URL,
HEADERS,
PARAMS,
});
在先前的迭代中,我曾尝试将API密钥包含有一个“ Authorization”标头,但是它有同样的问题。
通过状态码,您可能会很快认为我的API密钥有问题,但这似乎不是获取最新电影的问题,而且我已经对它进行了三遍检查。
编辑:我正在使用ReactJS和Redux,我确定问题不是从那里来的,因为在开始此项目之前,我已经使用了与本地服务器基本相同的配置,并且没有API密钥没有问题。
答案 0 :(得分:0)
解决了该问题。问题是CORS问题,我试图在没有CORS标头的情况下发出请求。再加上我的Axios配置错误。
我解决该问题的方法是使用带有我的API BASE URL的CORS Anywhere:
const BASE_URL = "https://cors-anywhere.herokuapp.com/https://api.themoviedb.org/3";
我看到了添加CORS标头的其他方法,包括称为CORS的Chrome扩展名,但这会引起其他问题。所以我想这是最简单的解决方案。