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

nodejs express设置允许跨域示例

前端设置withCredentials时,后端需要有2处配合,一个是 Access-Control-Allow-Origin不能是*号,另外一个是Access-Control-Allow-Credentials需要设为true

这样才能跨域请求时,携带cookie

const express = require('express');
const app = express();

const allowedOrigins = ['http://localhost:3000', 'http://127.0.0.1:5500'];

app.use((req, res, next) => {
  const origin = req.headers.origin;
  if (allowedOrigins.includes(origin)) {
    // 设置允许的来源
    res.setHeader('Access-Control-Allow-Origin', origin);
    // 允许携带 Cookie
    res.setHeader('Access-Control-Allow-Credentials', 'true');
    // 允许的请求方法
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    // 允许的请求头
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With');
    // 预检请求结果缓存时间,单位秒
    res.setHeader('Access-Control-Max-Age', '86400');
  }
  // 预检请求直接返回
  if (req.method === 'OPTIONS') {
    return res.sendStatus(200);
  }
  next();
});

app.get('/api/data', (req, res) => {
  res.json({ message: '跨域请求成功!' });
});

app.listen(8000, () => {
  console.log('Server is running on port 8000');
});

详细说明参考如何解决跨域请求的问题(CORS)?-CSDN博客

相关文章:

  • C#运算符详解
  • 【免费】2013-2019年上市公司知识产权数据
  • 【架构艺术】Go语言微服务monorepo的代码架构设计
  • C、C++读取空格、回车符函数【getline、cin.get、cin.getline、std::noskipws】
  • 仿muduo库实现高并发服务器-面试常见问题
  • C#核心(22)string
  • 从0开始完成基于异步服务器的boost搜索引擎
  • 可重构智能表面(RIS)的全面介绍
  • 渐进稀疏注意力PSA详解及代码复现
  • KMP 算法的 C 语言实现
  • ROS2-话题学习
  • RabbitMQ高级特性--消息确认机制
  • [网络爬虫] 动态网页抓取 — Selenium 入门操作
  • 搞定python之一----开发环境配置
  • AtCoder Beginner Contest 396(ABCDEF)
  • 【LLM】大模型推理、微调显卡挑选一览表
  • 【论文解读】《LIMO: Less is More for Reasoning》
  • PHP的Workerman 和 Java 常驻内存的相似性
  • Java【网络原理】(3)网络编程续
  • 如何避免项目后期盲目加人赶工
  • 郑州网站建设公司e00/视频号最新动作
  • 做得好的网站建设公司/google 谷歌
  • 营销网站建设hanyous/360搜索指数
  • 石龙镇仿做网站/优化设计答案四年级上册语文
  • 淮安网站建设/如何做一个自己的网站
  • 建筑网站源码/百度竞价排名正确解释