位置: 编程技术 - 正文

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

  • 建筑公司租赁费会计分录
  • 库存暂估入账
  • 外购的商品用于生产
  • 差旅费是计入
  • 食堂没有发票怎么做账
  • 满减 优惠券
  • 话费充值发票可以入账吗
  • 申请补交公积金提案
  • 一般纳税人的税率是多少个点
  • 小规模纳税人税额怎么做分录
  • 统借统还资金管理办法
  • 营改增之前的房产出售税率
  • 个体工商户销售自己使用过的物品
  • 用友t3固定资产计提折旧后没有凭证
  • 发放短期外汇贷款的意义
  • 个体工商户个人所得税怎么计算
  • 国税网不能打印,怎么设置
  • 增值税发票单位可以不填吗
  • 出差补贴没有发票
  • 所得税 季报
  • 车辆租赁费交的是什么税
  • 树木种植公司
  • 吉隆坡石油双塔有多高
  • 按揭贷款到账时间
  • win10桌面图标怎么随意摆放
  • 房屋装修固定家具是否计入房产税
  • 高新技术产业的税收优惠
  • qr code在线生成二维码
  • php消息队列kafka
  • 搭建自己的php框架
  • 扣缴义务人的法律地位
  • GPT3.5 , InstructGPT和ChatGPT的关系
  • 文件不小心删除了怎么恢复
  • PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
  • php调用java接口
  • 常用php数组排序方法
  • 百旺金赋开票系统客服电话
  • 设备 融资租赁
  • 印花税和工会经费用不用计提
  • 其他应收款其他应付款的风险
  • python多线程编程案例
  • bootstrapstandby
  • mysqlbinlog命令详解
  • 起重机属于固定资产中什么设备类型
  • sql server join
  • 税控盘减免税款怎么结转
  • 小规模纳税人应纳税额减征额怎么算
  • 固定资产清理的含义
  • 成本少了怎么处理
  • 房租进项发票怎么处理
  • 企业净资产如何算
  • 员工入股会计分录
  • 缴纳工会筹备金应该记什么科目
  • 房地产会计如何报税
  • 旅游饮食服务企业会计核算的特点包括
  • 金融企业借款费用扣除比例
  • sql语句编译执行过程
  • linux操作系统百度百科
  • 预装win10
  • win8官方u盘安装教程
  • 太极越狱助手
  • Win10系统中怎么给图片加备注
  • win10怎么快一点
  • js浏览器打印
  • androidserviceslibrary设置
  • 安卓十游戏怎么玩
  • batch批处理
  • unity3d入门教程中文图解
  • opengl三维场景
  • kill某个进程
  • javascript基于
  • jquery动态生成表格
  • actionscript与javascript的区别
  • jquery mvvm框架
  • 税务实地核实工作程序
  • 江苏省无锡市国家电网客服电话是多少
  • 国土国税垂管部主任是谁
  • 税务局开展税收宣传
  • 日照公交305发车时间表
  • 四川省税务局税费服务支持中心工作人员编制
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设