什么是跨域?
由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。
koa2-cors默认同源可以访问(也就是不跨域),非同源需要进行跨域设置,本文分别实现了单个跨域,多个跨域,以及所有跨域的支持。
当然,实际开发中得根据自己项目需求和安全级别定义,来确定跨域开放程度,一般不建议使用支持所有跨域的方式。
参考链接:https://www.npmjs.com/package/koa2-cors
具体实现,参考示例如下:
npm install koa2-cors --save-dev
var koa = require('koa'); var app = new koa(); var router = require('koa-router')(); // CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 var cors = require('koa2-cors'); app.use(cors({ origin: function (ctx) { // return "*"; // 允许来自所有域名请求 // return ctx.header.origin;// 当*无法使用时,使用这句,同样允许所有跨域 // return 'http://localhost:8080'; //单个跨域请求 // 允许多个跨域 var allowCors = ['http://localhost:8080', 'http://localhost:8081']; return allowCors.indexOf(ctx.header.origin) > -1 ? ctx.header.origin : ''; }, exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowMethods: ['GET', 'POST', 'DELETE'], allowHeaders: ['Content-Type', 'Authorization', 'Accept'], }))