当前位置: 首页 > 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中间件会自动处理。

http://www.xdnf.cn/news/454933.html

相关文章:

  • 代码随想录 算法训练 Day1:数组
  • Vue 3 打开 el-dialog 时使 el-input 获取焦点
  • C#扩展方法的入门理解
  • 【证书与信任机制​】自签名证书的风险与适用场景​​
  • 白日梦:一个方便快捷的将故事制作成视频的工具
  • Codeforces Round 996 (Div. 2)
  • 【深入Spring系列】源码级深入剖析SpringBoot如何实现自动装载
  • 网络流量监控设备与质量监控
  • 基于IMX429-IMX430-IMX432-IMX437等sensor的SLVS桥MIPI透传模组方案
  • uniapp vue 沉浸式窗体如何获取并排除外部手机浏览器底部菜单栏工具栏高度
  • 第十九次博客打卡
  • 理解概率密度函数
  • LU分解求解线性方程组
  • 实验九视图索引
  • “AI+儿童陪伴”,是噱头还是趋势?
  • 数据结构学习之链表学习:单链表
  • Java—— 双列集合Map的实现类
  • Mq队列的了解与深入
  • FlashInfer - 介绍 LLM服务加速库 地基的一块石头
  • Unity3D游戏内存管理优化指南
  • 基于SIP协议的VOIP话机认证注册流程分析与抓包验证
  • 网络层简单习题
  • 第二章:磁盘管理与文件管理
  • 编程技能:字符串函数04,直接使用 strcpy,解决报错
  • 【Lua】java 调用redis执行 lua脚本
  • 影响力最小化
  • React学习———React.memo、useMemo和useCallback
  • LeetCode100.7 接雨水
  • 【python爬虫】python+selenium实现Google Play Store应用信息爬虫+apk下载
  • 内存泄漏系列专题分析之十四:高通相机CamX ION/dmabuf内存管理机制ImageBuffer之GrallocBuffer原理