nodejs各种框架跨域设置

简介: nodejs各种框架跨域设置

在每次遇到跨域问题,再设置后端跨域配置的时候都会重新在笔记中查找,所以没在这里总结一下各种框架的跨域配置。


nodejs


设置配置。


  • 这里需要注意的是Access-Control-Allow-Origin不能是*号。 这样浏览器就不会拦截服务器设置的cookie了。


  • 因为设置允许携带cookie之后那么请求头Access-Control-Allow-Origin的值就不能设置为*,所以要另外指向一个。


// 设置允许跨域的源
 res.setHeader("Access-Control-Allow-Origin",req.headers.origin);  
 // 设置cookie允许跨域
 res.setHeader("Access-Control-Allow-Credentials", true);  
 // 设置可以跨域的请求方法
 res.setHeader("Access-Control-Request-Method", "PUT,POST,GET,DELETE,OPTIONS");


前端需要设置cookie跨域设置。请求头中设置withCredentials: true。这里默认情况下在跨域请求,浏览器是不带 cookie 的。但是我们可以通过设置 withCredentials 来进行传递 cookie。


egg.js


启用插件


// plugin.js
    exports.cors = {
        enable: true,
        package: 'egg-cors'
    }


设置配置


// config.default.js
  config.security = {
    csrf: {
      enable: false
    },
    // 设置跨域白名单
    domainWhiteList: [
      'http://localhost:8080',
      'http://127.0.0.1:8080',
    ],
  };
  config.cors = {
    credentials: true,   // 开启认证//允许Cook可以跨域credentials
    allowMethods: "GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS"
  };


可以自己手动设置请求origin通过


// config/config.default.js
    exports.cors = {
      origin: function ({ req }) {
        const { origin } = req.headers;
        // 配置允许访问白名单
        const whiteList = [
          'http://localhost:7001',
          'http://127.0.0.1:7001',
        ];
        if (whiteList.includes(origin)) {
          return origin;
        }
      },
      credentials: true,   // 开启认证//允许Cook可以跨域credentials
      allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
    };


express


通过插件完成


// 引入跨域插件
    const cors = require('cors'); 
    // 解决跨域
    app.use(cors());
    // 手动覆盖cors跨域默认设置
    const whitelist = ['http://127.0.0.1:8080', 'http://localhost:8080']
    const corsOptions = {
      origin: function (origin, callback) {
        if (whitelist.indexOf(origin) !== -1) {
          callback(null, true)
        } else {
          callback(new Error('Not allowed by CORS'))
        }
      },
      credentials: true
    }
    app.use(cors(corsOptions));


通过手动配置中间件


app.all("*", (req, res, next) => {
  res.header("Access-Control-Allow-Origin", req.headers.origin);
  res.header("Access-Control-Allow-Credentials", true); // ++ 新增
  // 设置可以跨域的请求方法
  res.header("Access-Control-Request-Method", "PUT,POST,GET,DELETE,OPTIONS");
  next();
});


koa


通过插件


const cors = require('koa2-cors'); 
    const app = new Koa(); 
    app.use(cors());
    // 或者自己配置各个头的值。
    app.use(cors({
      origin: function(ctx) {
        if (ctx.url === '/test') {
          return "*";
        }
        return ctx.headers.origin;
      },
      credentials: true,
      allowMethods: ['GET', 'POST', 'DELETE']
    }));


通过手动配置中间件


app.use(async (ctx, next)=> {
      ctx.set('Access-Control-Allow-Origin', ctx.headers.origin);
      ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
   });


相关文章
|
1月前
|
存储 缓存 JavaScript
node 框架
Node 框架以其独特的优势和广泛的应用场景,成为了现代 Web 开发中不可或缺的一部分。掌握 Node 框架的开发技能,对于开发者来说具有重要的意义。
101 59
|
1月前
|
安全 前端开发 JavaScript
Node框架的优缺点
Node 框架的优点使其在现代 Web 开发中具有重要地位,但同时也需要开发者在使用过程中注意其缺点,合理选择和应用,以充分发挥其优势,避免潜在问题的出现。随着技术的不断发展和完善,Node 框架也在不断改进和优化,以更好地适应各种应用需求。
60 28
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
1月前
|
Web App开发 缓存 监控
如何解决Node框架中内存管理的挑战?
解决 Node 框架中内存管理的挑战需要综合运用多种方法,并且需要在开发过程中保持谨慎和细心,不断优化和改进代码。同时,定期进行内存管理的检查和维护也是非常重要的。
110 63
|
1月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
1月前
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
92 2
|
1月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
49 4
|
2月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
64 1
|
1月前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
1月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
36 0