You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React调用Express接口已引入cors仍报CORS错误该如何解决?

问题解决步骤

1. 修复React代码语法与请求规则错误

你的Home组件存在括号不匹配问题,组件提前闭合导致return语句脱离组件作用域,会直接触发运行异常。同时配置proxy后不能写完整服务端地址,否则代理规则不生效,修复后代码如下:

import { useState,useEffect } from 'react';

const Home = () => {
  async function fetchData() {
      try{
        // 配置proxy后直接写接口路径即可
        const output = await fetch(`/users`);
        // 需要将原始Response对象转为json格式才能拿到返回数据
        const resData = await output.json();
        console.log(resData);
      } catch(e){
          console.error(e);
      }
  }

  useEffect(() => {
    fetchData();
  }, [])

  return (
    <h1>FetchData</h1>
  )
}

export default Home;

2. 修复Express服务端潜在问题

首先确认你已经在服务端项目中安装了cors依赖,未安装的话先执行npm install cors,否则服务端启动时就会抛出异常,触发500错误。
修改服务端代码如下:

const Express = require('express');
const PORT = 5000;
const cors = require('cors');

const server = Express();
// 明确指定允许的前端地址,避免cors规则异常
server.use(cors({
  origin: "http://localhost:3000"
}));

server.get('/users', (req, res) => {
    // 使用res.json替代res.send,自动添加正确的json响应头
    res.json({"users": [ {"user1": "John"}, {"user2": "Nick"} ]});
})

server.listen(PORT, () => {
  console.log("server is running on 5000")
});

3. 重启两端服务验证

修改完成后先关闭当前运行的Express和React开发服务,先启动Express服务,确认控制台无报错后再启动React服务。
可直接在浏览器地址栏输入http://localhost:5000/users验证接口是否正常返回数据,若能正常显示json内容则说明服务端无问题。

内容的提问来源于stack exchange,提问作者Vishal Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:05