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

Express+NodeJS开发中CORS策略拦截请求问题求助

解决Express服务器的CORS跨域问题

先梳理两个关键问题及对应的解决办法:

1. 核心问题:未配置CORS响应头

你当前仅设置了Content-Type,但跨域请求需要服务器返回CORS相关响应头才能被浏览器放行。提供两种解决方式:

方式一:使用官方cors中间件(推荐)

这是最便捷的实现方式,步骤如下:

  • 安装依赖:
npm install cors
  • 在Express应用中引入并启用:
const cors = require('cors');
const app = express();

// 全局启用CORS,允许所有来源的请求(生产环境建议指定具体域名)
app.use(cors());

// 再定义你的接口逻辑
app.get(`/important`, function(req,res){
    fs.readFile('./json/important.json', `utf8`, function(err, data){
        console.log(data)
        res.set('Content-Type', 'application/json')
        res.status(200)
        res.end(data)
    })
})

方式二:手动设置CORS响应头

如果不想额外安装依赖,可直接在接口中添加CORS相关头:

app.get(`/important`, function(req,res){
    // 添加CORS响应头
    res.set('Access-Control-Allow-Origin', '*'); // 允许所有域名访问,生产环境替换为具体域名
    res.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // 允许的请求方法
    res.set('Access-Control-Allow-Headers', 'Content-Type'); // 允许的请求头

    fs.readFile('./json/important.json', `utf8`, function(err, data){
        console.log(data)
        res.set('Content-Type', 'application/json')
        res.status(200)
        res.end(data)
    })
})

2. 额外注意:请求路径不匹配

客户端fetch请求的是/morbius,但服务器仅定义了/important接口,这会导致请求返回404错误。需要将客户端请求路径改为/important,或在服务器上新增/morbius的接口处理逻辑。

修改后的客户端示例代码:

fetch("http://127.0.0.1:3031/important")
    .then(result=>{
        return result.json(); // 需返回解析后的Promise,后续才能拿到数据
    })
    .then(data => {
        console.log(data);
    })
    .catch(err => {
        console.error('请求出错:', err);
    })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:54:20