位置: 编程技术 - 正文

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

  • 增值税的计税依据包括
  • 差旅费计入工资成本吗
  • 购买不良资产交印花税吗
  • 个体工商户增值税申报操作流程
  • 2021年度全年一次性计税
  • 计提工会经费为什么是增项
  • 结转净利润到利润分配分录
  • 劳务公司一般纳税人开票几个点
  • 物业管理水电费税率
  • 长期股权投资权益法下初始投资成本
  • 支付境外销售佣金是不是属于完全在境外发生的服务
  • 客户想免费拿样
  • 打款到另外公司作为投资款的会计分录怎么做?
  • 业务招待费扣除计算举例说明
  • 车船税交给谁了
  • 金税盘新领的发票怎么分发出去
  • 中小企业货币资金内部控制案例
  • 记账凭证的分类和基本内容
  • 简易征收发票认证了之后怎么处理
  • 地价计入房产
  • 零售金银首饰消费税税率是多少
  • 佣金的规定方法有哪些
  • win10系统怎么设置锁屏壁纸
  • 收到一张增值税红冲发票
  • 没收的定金 会计分录
  • php中const
  • Cpqset.exe是什么系统进程 Cpqset有啥作用
  • 增加注册资本的请示
  • 调制解调器的作用包括
  • 网络延迟高不稳定怎么办
  • 解决打呼噜只需一杯水
  • mac怎么写代码
  • php必背知识点
  • 搜索神器官网
  • 支付劳务公司的劳务费计入应付账款还是其他应付款
  • 非税收入定额票据可以报销吗去什么地方报销
  • 迭代器实现原理
  • c语言中的typedef struct
  • 空调能直接用水清洗不?
  • 租赁吊车服务的利润大概有多少
  • 公司报销金额有限制吗
  • 固定资产折旧的计算方法
  • 小规模季度超过45万了怎么缴纳
  • 本月损益类未结转为零的一级科目怎么操作
  • 车辆购置税如何账务处理
  • 企业网银代发工资明细打印
  • 固定资产在以后会计期间可以转回吗
  • 购进货物的运费税率是从主吗
  • 2020发票丢失新规
  • 期初借款余额计算公式
  • 合同履约成本的会计分录
  • 小规模一直零申报有什么影响
  • 外贸企业有内销和外销是否分开做账
  • 会计凭证是对外公布的资料吗
  • win10截图截不了怎么办?
  • gwsloader.exe是什么意思
  • linux 限制内存
  • centos7.6和7.7
  • load its core dll
  • win7系统怎么给文件夹设置密码
  • win7不识别大于4T的盘
  • win8.1 ie浏览器
  • OpenGL ES2.0-iPhone开发-part1
  • web在线编辑excel
  • perl 教程
  • NeHe OpenGL Lesson 9
  • jquery放在head还是body
  • android布局文件放在哪
  • 修改bash_profile
  • js模拟用户输入
  • 使用SQLite数据库保存和处理数据
  • Binary XML file line #7: Error inflating class fragment
  • 国家税务局服务宗旨是什么
  • 财税专家刘杨简历图片介绍
  • 国家税务总局石棉县税务局
  • 乡镇地税局待遇
  • 理财持有时间
  • 税务局文化品牌
  • 铁力杯四省冠军
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设