【发布时间】:2020-09-06 00:10:42
【问题描述】:
我在连接我的 API 时收到了可怕的 CORS 错误。我正在使用 BeerDB 之一。我尝试了插件,添加标题,进入index.js,但似乎没有解决它。仍在调查中,我的App.js 代码如下。这是一个 React 应用程序。
我什至能想到的下一件事是重构我的 API 获取调用以使用 axios 并使用与当前使用不同的语法。
import React, {useEffect, useState, Component} from 'react';
import './App.css';
import Beer from './Beer.js';
const App = () => {
const App_Key = "b1322de05886eaf6bdd71b64c52d12b7"
const [beers, setBeers] = useState([]);
useEffect (() => {
getBeers();
}, []);
const getBeers = async () => {
const response = await fetch("http://api.brewerydb.com/v2/?key=b1322de05886eaf6bdd71b64c52d12b7");
const data = await response.json();
console.log(data);
}
return(
<div className="App">
<form>
<input type="text" ></input>
<button type="submit">Search</button>
</form>
{ beers.map(beers => (<Beer /> )) }
</div>
);
}
export default App;
【问题讨论】:
-
这是简单的cors问题,您需要从服务器添加Access-Control-Allow-Origin标头,或者在后端编写自己的代理以通过它传递数据。
-
他们不提供允许标题。您需要在自己的后端代理它。除非他们提供确实添加这些标头的其他 API,否则无法解决此问题。这不是你的前端可以规避的。
-
您还应该避免将您的 API 密钥 supposed to keep secret 放在您的问题中。既然它已经公开,您应该请求一个新密钥并删除旧密钥。
标签: reactjs cors node-fetch