koa2-cors设置允许指定单个域名、多个域名、所有域名跨域

简介: 在你koa项目入口文件中引入一个中间件koa2-cors,然后执行下它的cors()方法就完了,但考虑到安全性问题,我们上线后并不希望所有人可以去跨域访问接口,那么如何做?
+关注继续查看

允许所有域名跨域访问


const cors = require('koa2-cors');// CORS是一个W3C标准,全称是"跨域资源共享"
app.use(cors()); //全部允许跨域


你没有看错,就这么简单,在你koa项目入口文件中引入一个中间件koa2-cors,然后执行下它的cors()方法就完了,但考虑到安全性问题,我们上线后并不希望所有人可以去跨域访问接口,那么如何做?


指定单个域名跨域


app.use(
    cors({
        origin: function(ctx) { //设置允许来自指定域名请求
            return 'http://localhost:8080'; //只允许http://localhost:8080这个域名的请求
        },
        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 = ['http://weipxiu.com','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::3000' //默认允许本地请求3000端口可跨域
        },
        maxAge: 5, //指定本次预检请求的有效期,单位为秒。
        credentials: true, //是否允许发送Cookie
        allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法
        allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
        exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
    })
);


相关文章
|
2月前
|
小程序 安全 定位技术
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
99 0
|
2月前
|
PHP Windows
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
27 0
|
9月前
|
XML 开发框架 .NET
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
396 0
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
|
9月前
|
域名解析 网络协议 安全
成千上万个域名如何一次性完成解析设置?
成千上万个域名如何一次性完成解析设置?
296 0
成千上万个域名如何一次性完成解析设置?
|
10月前
|
缓存 网络协议 安全
Linux:设置/修改linux主机名+hosts映射+主机名解析机制分析+DNS域名劫持
Linux:设置/修改linux主机名+hosts映射+主机名解析机制分析+DNS域名劫持
221 0
Linux:设置/修改linux主机名+hosts映射+主机名解析机制分析+DNS域名劫持
|
Python
Django如何设置首页(默认输入域名或者ip即可跳转到指定页面)
Django如何设置首页(默认输入域名或者ip即可跳转到指定页面)
722 0
|
域名解析 Windows
Windows 技术篇-修改hosts添加域名解析实例演示,设置域名指定ip方法
Windows 技术篇-修改hosts添加域名解析实例演示,设置域名指定ip方法
508 0
Windows 技术篇-修改hosts添加域名解析实例演示,设置域名指定ip方法
|
域名解析 数据安全/隐私保护
在阿里云注册的域名怎么设置解析?
在阿里云注册的域名怎么设置解析?
2440 0
在阿里云注册的域名怎么设置解析?
|
负载均衡 应用服务中间件 nginx
Nginx解决跨域、大文件、负载均衡和域名管理的问题(亲测真实有效)
Nginx Nginx在解决跨域、负载均衡和域名管理的问题上,有非常好的作用!值得应用。 在工作和学习中,前后端交互的时候,时常会需要做跨域的事情,这个时候,有两种方式,一种是服务端代码程序中去解决跨域,这是一种比较愚蠢的方式,推荐使用Nginx进行跨域的操作。
2532 0
|
应用服务中间件 域名解析 网络协议