【发布时间】:2021-11-07 21:48:32
【问题描述】:
我正在使用外部 api,我将 express.js 设置为我的后端并使用 app.use(cors()) 来解决 cors 策略错误,但当我执行时我仍然收到错误尝试在 react 中进行 api 调用
服务器设置
server.js
const express = require('express')
const app = express();
const cors = require('cors')
app.use(cors({
origin: '*'
}));
const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
API 调用
app.js
useEffect(() => {
async function datareciever() {
const response = await fetch("api_url")
const data = await response.json()
console.log(data)
}
datareciever()
}, [])
我在浏览器中收到的错误
CORS 策略已阻止从源“http://localhost:3000”获取“api_url”的访问权限:对预检请求的响应未通过访问控制检查:否“访问-请求的资源上存在 Control-Allow-Origin' 标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我也试过将端口设置为 3000,但是 express 服务器占用了 3000 端口所以反应然后切换到 3001。
我相信 origin: '*' 应该允许任何端口/域,所以我认为这不是问题。
当前文件结构(如果重要)。 React 在 expressapp 文件夹中。
可能导致问题的原因是什么?
【问题讨论】:
-
分享完整的错误
-
您的问题似乎类似于 - stackoverflow.com/questions/34644622/… 试试这个 - stackoverflow.com/a/56051528/5417843
-
@Evert 更新帖子以包含完整错误
-
您的
app.js中的api_url是替换为外部API 的实际URL 还是替换为您的API URL? -
@MichaelPu api_url 是外部 api 的 url,带有 API 密钥的标头,只是将其删除并将 api_url 发布在这里因为实际的网址有点长,只是让帖子看起来整洁。