当前位置: 首页 > news >正文

Express项目解决跨域问题

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

  1. 安装cors包

    npm install cors
  2. 在应用主文件(如app.js)中配置

    var express = require('express');
    var cors = require('cors'); // 引入cors
    var app = express();// 启用CORS(所有来源)
    app.use(cors()); // 全局应用中间件// 如果需限制来源,可配置选项
    // app.use(cors({
    //   origin: 'http://你的前端域名.com'
    // }));app.use('/', require('./routes/index')); // 你的路由文件

    方法二:手动设置响应头

    在路由处理中直接设置响应头:

    router.get('/data', function(req, res, next) {// 设置CORS头res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Methods', 'GET');res.header('Access-Control-Allow-Headers', 'Content-Type');const sampleData = { /* 你的数据 */ };res.json(sampleData);
    });

开发环境:推荐使用cors()默认配置(允许所有来源),简单快捷。

生产环境:建议通过origin参数限制允许的域名,提升安全性。

修改后的代码示例(使用cors中间件)

var express = require('express');
var router = express.Router();
const cors = require('cors'); // 引入cors/* GET home page. */
router.get('/', function(req, res, next) {res.render('index', { title: 'Express' });
});// 新增接口并应用cors(或在全局应用)
router.get('/data', cors(), function(req, res, next) { const sampleData = {message: "这是返回的数据",items: [{ id: 1, name: "苹果", img: 'http://www.xxx.cn/assets/itemImg16-CZsyuSuW.jpg' },{ id: 2, name: "香蕉", img: 'http://www.xxx.cn/assets/itemImg16-CZsyuSuW.jpg' },{ id: 3, name: "橙子", img: 'http://www.xxx.cn/assets/itemImg14-CwjapHdU.jpg' }],timestamp: new Date().toISOString()};res.json(sampleData);
});module.exports = router;

注意事项

  • 如果前端仍遇到跨域问题,请检查浏览器控制台错误信息,确认响应头是否正确携带Access-Control-Allow-Origin

  • 预检请求(如POST带有特定头)需处理OPTIONS方法,使用cors中间件会自动处理。

相关文章:

  • 3337|3335. 字符串转换后的长度 I(||)
  • 不借助 Cursor,如何开发第一款 ios 产品并做到付费榜 Top 2
  • 右值引用和移动语义
  • 简单易懂的JavaScript中的this指针
  • K8S Ingress 实现AB测试、蓝绿发布、金丝雀(灰度)发布
  • 【Linux网络】认识网络
  • Vue:显示数据
  • MySQL基础之开窗函数
  • 二叉树前序与后序遍历迭代法详解:栈操作与顺序反转的巧妙结合
  • 执行apt update后报错 Unable to lock directory /var/lib/apt/lists/ 问题解决
  • Myshell与清华联合开源TTS模型OpenVoiceV2,多语言支持,风格控制进一步增强~
  • leetcode2934. 最大化数组末位元素的最少操作次数-medium
  • 【工具类】ssh,remote-ssh插件和sftp插件
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智能安检机技术方案‌
  • electron结合vue,直接访问静态文件如何跳转访问路径
  • Apache Pulsar 消息、流、存储的融合
  • Spyglass:跨时钟域同步(同步单元)
  • 编程日志5.6
  • 一文掌握六个空转数据库
  • MySQL——九、锁
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 沙青青评《通勤梦魇》︱“人机组合”的通勤之路
  • 崔登荣任国家游泳队总教练
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 持续8年仍难终了的纠纷:败诉方因拒执罪被立案,胜诉方银行账户遭冻结
  • 上海团队在医学顶刊连发两文,率先提出“证据污染”循证概念