位置: 编程技术 - 正文

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

  • 公路客运企业应走集约化经营
  • 累进税率的形式有全额累进税率和什么两种
  • 税务局报税怎么操作流程
  • 小规模增值税附加税税率
  • 股东分红是净利润还是毛利润
  • 车辆购置税账务怎么处理流程
  • 转让生产指标的企业所得税
  • 去年的进项发票今年还能抵扣吗
  • 中小企业存货内部控制存在的问题以公司为例
  • 法院判罚利息怎么算
  • 跨年度销售退回所得税
  • 住房公积金如何在手机上提取
  • 所得税季度报表营业外收入填哪
  • 成立一般纳税人公司有什么好处
  • 公司用窗帘用什么颜色
  • 年报中包括处置资金吗
  • 其他应付款辅助核算怎么挂
  • 没有收入业务招待费要全额调增吗
  • 计入固定资产成本的费用
  • 增值税发票红字信息表
  • wrme.exe是什么
  • 试运行期间收入和成本怎么记账
  • 持有至到期投资科目被取消了吗
  • 工行对公贷款利息扣除时间
  • 会计政策变更对财务分析的影响
  • 采用汇兑的方式归还前欠货款
  • Web渗透测试新手实操详解
  • 微信第三方登录信息修改
  • 薄雾笼罩怎么写
  • 固定资产一次性折旧政策2023
  • 小满内容
  • web主要的请求方式有几种
  • rmt命令 远端磁带传输协议模块
  • string对象放在哪里
  • 制造费用的科目
  • 6月收到4月的单子怎么办
  • 银行日记账错误更正案例
  • 公司注销剩余的发票怎么作废
  • spring boot dao
  • 矿产资源补偿费属于管理费用吗
  • 研发费用成本化和费用化
  • sql server标识符
  • 法律中的大额和小额规定
  • 无票收入的增值税税率
  • 期末调汇的会计怎么做账
  • 运输公司车辆保养记录表格
  • 研发产品收入的会计分录
  • 水利基金和印花税的计税依据一样吗
  • 社保稳岗补贴账务处理分录
  • 收银系统入库入错了怎么办
  • 坏账收不回来如何做分录
  • 社保申报工伤怎么操作
  • 差旅费是什么支出类型
  • 企业凭证处理流程图
  • 民营医院的发票在哪里领
  • 用友t3财务通普及版如何开下年账
  • mysql存储过程菜鸟教程
  • 标准sql如何计算时间戳的差
  • linux统计重复次数
  • ubuntu ftp服务开启
  • ubuntu20.4分区
  • cocos2dx 4.0
  • 经纬科技it6000
  • qt opengl obj
  • 提取字符串的公式
  • jQuery ajax 当async为false时解决同步操作失败的问题
  • python列表讲解
  • 你需要知道的100位艺术大师
  • shell终端是什么意思
  • jq获取节点属性
  • 手把手教你自己做菜
  • jquery选择器的分类有哪些
  • js手势放大缩小
  • 陕西地方水利建设基金减免政策2023
  • 江苏省国家税务总局电子税务局
  • 垃圾填埋税率
  • 税务设备有什么特点
  • 统一社会信用代码有什么用
  • 个税3月份申报2月的个税?
  • 企业收到上一年增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设