位置: 编程技术 - 正文

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模块有哪些)

  • 小规模企业可以开6%的税票吗
  • 实收资本印花税税率多少
  • 房地产项目转让条件
  • 免租期房租怎么做会计分录
  • 自然人纳税人识别号查询
  • 政府补贴流程
  • 对方把发票丢了可以重开吗
  • 实际收到股票股利的分录
  • 运输费可以和货款合并开票吗
  • 房地产开发桩基施工方案
  • 上月应交税金
  • 同一客户应收应付可以相互抵消吗
  • 购进原材料没有发票怎么做分录
  • 非居民企业能否认定为一般纳税人
  • 每个行业都能赚钱吗
  • 企业的成本费用包括哪些
  • 政府奖励金额是否要交二次税呢
  • 二季度所得税申报时间
  • 公司工资分两次发放算逃税吗
  • 跨年的工会经费怎么做分录
  • 贴现利息计算器
  • 国家基建项目规划
  • 在windows7中,使用鼠标拖放功能
  • 文件过滤什么意思
  • 企业所得税计算方法公式
  • 分配水电费包括税费吗
  • win11预览版选哪个
  • 建筑企业如何确认所得税收入
  • 房产企业预售收入怎么做账务处理
  • 神舟战神k670c-g4e1游戏笔记本怎么样?
  • node.txt
  • 未分配利润怎么清零
  • 乐吾实验学校网站
  • 小规模附加税费
  • transform模块
  • 将织梦dedecms转换到wordpress
  • 个税返还的会计处理
  • 红字发票已开但红字发票信息表已核销待查证,怎么回事?
  • 织梦怎么调用当前栏目下的文章
  • mysql千万级数据group by
  • 主营业务收入和销售费用的区别
  • 公司借给股东的钱金额较大股东可以在年底现金归还吗
  • 汽车的计提折旧
  • 哪些人需要进行个人所得税年度汇算
  • 事业单位长期应付款呆账怎样处理好
  • SQL Server解析XML数据的方法详解
  • 差旅费报销过程中会计和出纳分别做什么
  • 核定征收的企业所得税怎么算
  • 企业的哪些支出不得列入成本费用原因
  • 汇算清缴补交的所得税怎么记帐
  • 已认证发票作废
  • 收到银行手续费发票怎么入账
  • 公司报销发票需要查验真假吗
  • mysql中字符串函数
  • Mysql row number()排序函数的用法和注意
  • 键盘设施
  • ubuntu rar压缩
  • centos划分分区
  • dwm22.exe病毒
  • win10系统怎么关闭病毒防护
  • win10系统收不到wifi信号
  • win10预览版好吗
  • w10 2021年更新
  • javascript总结
  • Javascript中的this
  • easyui框架的优缺点
  • 怎么检测python
  • border-radius在Android下的几个BUG
  • android的图片文件保存在工程的哪个文件夹
  • 黑马程序员培训怎样
  • jquery 插件编写
  • android缓存清理
  • python快速排序最简单写法
  • 全电发票
  • 在企业内部具有行使否决权的是
  • 夫妻相聚
  • 印花税当期没有发生可以不用申报吗
  • 存在未申报记录
  • 审计验资费计入什么科目
  • 18个税种征税范围
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设