koa的跨域处理koa2-cors

本文介绍了如何使用Koa2中间件koa2-cors处理跨域问题。首先,通过npm安装koa2-cors,然后在main.js中配置跨域策略。可以设置允许来自特定域名的请求,例如允许所有域名或白名单中的域名,并配置预检请求的有效期、是否发送Cookie、允许的HTTP方法和头信息等。示例中提供了两种配置方式,一种是设置允许所有和指定域名,另一种是设置白名单。
摘要由CSDN通过智能技术生成

koa处理跨域

跨域问题如图:

在这里插入图片描述

1、安装koa2-cors

npm i koa2-cors

npm包地址:koa2-cors

在这里插入图片描述

2、main.js中配置

// 处理跨域 
const cors = require('koa2-cors');// 配置中间件

// 实例化koa 之后的代码如下:
app.use(cors({
  origin: function(ctx) { //设置允许来自指定域名请求
    if (ctx.url === '/test') {
      return '*'; // 允许来自所有域名请求
    }
    return 'http://localhost:8081'; //只允许http://localhost:8081这个域名的请求
   },
   maxAge: 5, //指定本次预检请求的有效期,单位为秒。
   credentials: true, //是否允许发送Cookie
   allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法
   allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
   exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
}))

或者设置白名单如下:

app.use(cors({
  origin: function(ctx) { //设置允许来自指定域名请求
    const whiteList = ['https://www.fqniu.xyz', 'http://localhost:8080', 'http://localhost:8081']; //可跨域白名单
    let url = ctx.header.referer.substr(0, ctx.header.referer.length - 1); 
    if(whiteList.includes(url)){
      return url // 注意,这里域名末尾不能带/,否则不成功,所以在之前我把/通过substr干掉了
    }
    return 'http://localhost:8080' //默认允许本地请求8080端口可跨域
  },
  maxAge: 5, //指定本次预检请求的有效期,单位为秒。
  credentials: true, //是否允许发送Cookie
  allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法
  allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
  exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
}))
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值