位置: 编程技术 - 正文

Node.js设置CORS跨域请求中多域名白名单的方法(node.js可以跨平台吗)

编辑:rootadmin

推荐整理分享Node.js设置CORS跨域请求中多域名白名单的方法(node.js可以跨平台吗),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs collaborator,nodejs co,node.js可以跨平台吗,node设置跨域,node设置跨域,nodejs cors,node跨域cors,nodejs设置跨域,内容如对您有帮助,希望把文章链接给更多的朋友!

CORS

说到CORS,相信前端儿都不陌生,这里我就不多说了,具体可以看看这篇文章。

CORS,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名。最常见的设置是:

然而,这样的设置是最简单粗暴,同时也是最不安全的。它表示该接口允许所有的域名对它进行跨域请求。然而,在一般实际业务中,都希望该接口只允许对某一个或几个网站开放跨域请求权限,而非全部。

那么,聪明的你肯定想着,多域名白名单还不简单吗,写个正则就好啦?再不行,直接配置 Access-Control-Allow-Origin 属性为用逗号分隔的多个域名不就好了吗?

就像下面这样:

很遗憾地告诉你,这样的写法是无效的。在Node.js中,res的响应头Header中的 Access-Control-Allow-Origin 属性不能匹配除 (*) 以外的正则表达式的,域名之间不能也用逗号分隔。也就是说, Access-Control-Allow-Origin 的属性值只允许设置为单个确定域名字符串或者 (*)。

Node.js设置CORS跨域请求中多域名白名单的方法(node.js可以跨平台吗)

既然我们希望允许的是多个域名,也不愿意使用不安全的 * 通配符,难道就真不能配置多域名白名单的CORS了吗?

多域名白名单的CORS确实是可以实现的。只是有一点曲线救国的味道。

多域名白名单的CORS实现原理

具体原理可以参考cors库的核心代码:

实现原理是这样的:

既然 Access-Control-Allow-Origin 属性已经明确不能设置多个域名,那么我们只得放弃这条路了。

最流行也是最有效的方法就是,在服务器端判断请求的Header中Origin属性值(req.header.origin)是否在我们的域名白名单列表内。如果在白名单列表内,那么我们就把 Access-Control-Allow-Origin 设置成当前的Origin值,这样就满足了Access-Control-Allow-Origin 的单一域名要求,也能确保当前请求通过访问;如果不在白名单列表内,则返回错误信息。

这样,我们就把跨域请求的验证,从浏览器端转移到服务端来了。对Origin字符串的验证就变成了相当于常规字符串的验证,我们不仅可以使用数组列表验证,还可以使用正则匹配。

具体代码如下:

Oh yeah,简直完美~

总结

标签: node.js可以跨平台吗

本文链接地址:https://www.jiuchutong.com/biancheng/377899.html 转载请保留说明!

上一篇:Restify中接入Socket.io报Error:Can’t set headers的错误解决(socket restful)

下一篇:nodejs模块nodemailer基本使用-邮件发送示例(支持附件)(nodejs模块有哪些)

  • 房产契税什么时候交的小知识
  • 材料抵扣货款怎么写简单协议范本
  • 交通事故的支出是否可以个税税前扣除
  • 合同取得成本属于
  • 金税四期已经开始了吗
  • 税控盘清卡失败
  • 发票用完了领发票需要带什么东西
  • 19年高速公路免费时间
  • 13点专票和13点普票的区别
  • 即征即退办理时限是多少
  • 农产品增值税核定扣除计算
  • 收到利息计入哪个会计科目
  • 不交社保的单位违法吗?
  • 广告宣传费用的计算方法
  • 软件企业增值税退税的账务处理
  • 普票开票开给个人怎么开
  • 加油充值卡有优惠吗
  • 2021年个人开发票税率
  • 税字号是不是纳税人识别号
  • 公司按月支付住房公积金
  • 物业管理的差额怎么算
  • 税务申报没报上怎么办
  • 纸巾可以开专票吗
  • 个体户网上报税流程视频
  • 付款信息和开票信息区别
  • 小规模减免增值税政策
  • 用一般户发工资会怎么样
  • 当月未出账费用
  • 鸿蒙负一屏怎么设置
  • 报销单据粘贴单样本
  • 劳务费和合同如何分配
  • 来电转接怎么设置空号
  • php中删除文件的函数
  • 银承到期扣款会计分录
  • 交个税手续费账务处理
  • 农产品核定扣除办法
  • PHP:pg_client_encoding()的用法_PostgreSQL函数
  • php教程100
  • 增值税留抵退税怎么操作
  • mysql_escape_string()函数用法分析
  • 数据库arc文件
  • php对象是值传递还是引用传递
  • 一般纳税人销售给小规模纳税人
  • 织梦安装步骤
  • Pythonround函数作用
  • python缺省函数
  • 建安企业确认收入的依据
  • 不动产集体产权证什么意思
  • 2021年发票认证期限为多少天
  • 收缩数据库日志文件对数据有影响吗
  • 餐饮毛利率多少为合理范围
  • 电子商业承兑汇票的承兑有以下几种方式
  • 机器设备一般折旧几年
  • 现金流量比率是什么意思
  • 预付账款没有发票吗
  • 商贸企业的产值和营业收入
  • 简易征收可以开具3专票吗
  • 股东权益净资产收益率计算公式
  • 物业管理企业应按职工工资总额的1.5%计提工会经费
  • linux实现mysql数据库每天自动备份定时备份
  • win7卸载程序找不到软件
  • 让Windows XP、2003、2008自动登录的设置
  • linux获取操作系统版本
  • solaris 安装
  • 电脑删除ie后怎么恢复
  • 应用程序复制粘贴
  • win7系统删除文件夹怎么恢复
  • Ubuntu开启热点
  • linux用户权限管理
  • win7系统怎么备份文件
  • Setver、Share、Subst命令的使用方法
  • 了不起的狐狸爸爸
  • javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
  • jquery设置禁用
  • jquery showdialog
  • 江西国税局电子税务局
  • 企业吸收合并资质
  • 如何在国税电子税务平台为员工办理定制社保卡
  • 增值税是要上交给国家的吗?
  • 税务局纪检组为税收工作纪律保障
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设