位置: 编程技术 - 正文

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

  • 小规模纳税人销售额超过500万
  • 固定成本和变动成本之和称作
  • 利润表季度怎么填写
  • 项目部电缆属于固定资产吗
  • 上年多计提增值税,今年如何调整
  • 网上认证勾选平台登录不成功
  • 以前年度亏损弥补会计分录
  • 发票没用完可以申请超限量吗
  • 工会经费的减免申请
  • 买一赠一视同销售征收增值税吗
  • 收到失控发票写情况说明
  • 递延收益摊销金额怎么算
  • 金税三期社保费管理客户端v1.0.088(生产环境)
  • 事业单位存货盘亏会计分录
  • 费用的完成率怎么计算
  • 经营性固定资产计入什么科目
  • 外购摩托车从销项税额中怎么抵扣?
  • 营改增后劳务公司账务处理
  • 新成立的公司怎么交公积金
  • 企业取得的不征税收入需要在几年内花出去
  • 轨道交通很高兴 土地税优惠来了
  • 上月有留抵的进项税额本月会计分录
  • 职工教育经费列支范围及标准
  • 所得税新规定
  • 向分公司拨款如何填现金流量表
  • 劳务外包与劳务派遣公司
  • 公司租入农民的房子好吗
  • 公司零税收申报
  • 企业管理服务公司是中介吗
  • 数量和单价的乘积
  • 计提福利费会计科目
  • win11windows键没反应
  • 如何修复电脑上qq对话过期视频
  • 收到稳岗补贴计入哪个科目
  • 公司备用金属于夫妻财产吗
  • php rsa
  • 固定资产的预计使用寿命和净残值发生变更
  • 医院装修设计费用取费标准表
  • uniapp 打开小程序
  • 3d人体骨骼模型软件
  • firewall enable
  • php 用户
  • 小企业会计准则和企业会计准则的区别
  • 固定资产的入账金额怎么算
  • 企业欠缴税款违法吗
  • 招待客人有什么讲究
  • 确认委托代销手续费的会计分录
  • 外购的商品
  • 火车票报销抵扣比例是多少
  • 承兑汇票多付退税怎么算
  • 应付账款暂估会计处理
  • 废料如何做分录
  • 小规模企业税金怎么做账
  • 年末资产减值损失可以税前扣除吗
  • 主营业务收入转入什么科目
  • 建筑工程开办费
  • 《关于工资总额组成的规定》第四条
  • 材料采购办法
  • 会计年初如何轻松工作
  • mysql免安装版怎么启动
  • Win10预览版拆弹
  • linux的awk命令大全
  • keyemain.exe是什么
  • win7怎么设置最佳性能
  • win8禁用网络之后如何开启
  • unity物理效果
  • js获取页面元素的方法
  • jQuery插件安装教程
  • linux chmod s
  • 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
  • shell 判断进程是否存在
  • android sdkmanager
  • 深入理解中国式现代化
  • android studio如何用安卓手机模拟
  • javascript中的原型和原型链
  • js浮动窗口
  • 种子公司缴税吗多少钱
  • 你家预收租金到哪里去了
  • 单据整理方法
  • 深圳为何
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设