状态7:无法使用TMDB API通过ID获取电影

时间:2019-08-26 10:01:35

标签: reactjs api redux axios

我正在尝试使用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密钥没有问题。

1 个答案:

答案 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扩展名,但这会引起其他问题。所以我想这是最简单的解决方案。