为什么我不能在 React 中使用 fetch 从 localhost:3000 调用 localhost localhost:5000?

Why can't I call localhost localhost:5000 from localhost:3000 using fetch in react?

我在 localhost:3000 上的 React 应用程序 运行 并且在我的代码中使用 fetch to localhost:5000/users.

发出 GET 请求
const [users, setUsers] = useState([]);

useEffect(() => {
  fetch('http://localhost:5000/users')
    .then(res => res.json())
    .then(data => setUsers(data))
}, []);

但是我收到一个名为

的错误

Access to fetch at 'http://localhost:5000/users' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

CORS问题,尝试用这种方式

fetch('http://localhost:5000/users', { mode: 'no-cors' })

这是一个被广泛讨论的问题。按照以下步骤操作:

如果您的后端使用 nodejs 或 express js。在您的 Express 应用中安装 cors 包。

npm install cors

并且,在您的 index.js 文件中包含以下内容。

var cors = require('cors')

app.use(cors())

就是这样。它现在应该工作了。不要忘记重新启动节点服务器。

要更好地理解它,请阅读此 article