位置: 编程技术 - 正文

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

  • 初装费包括什么
  • 增值税留抵抵欠税政策解读
  • 资源税的征税对象都是原矿和选矿
  • 自产产品用于职工福利会计处理
  • 给中间人回扣犯罪吗
  • 财务报表季报申报报表要分开申报吗
  • 银行回单日期晚于做账日期
  • 企业职工保险如何转灵活就业
  • 税法关于开具发票的规定
  • 注册资本认缴与实缴会计如何做账
  • 在建工程会计分录什么意思
  • 累计折旧借贷方向分录
  • 客户退货金额小怎么说
  • 进口关税税率和增值税
  • 公司给员工的奖品是否要扣税
  • 运输业增值税专用发票开具要求
  • 个人可以去税务局开票吗?
  • 核定征收是不是不需要发票了
  • 工会经费电子税务局找不见了
  • 工费经费用计提吗
  • 清包工有措施费吗
  • 烟丝消费税组成计税价格
  • 团建费用是什么意思
  • 如何查询所属税务所
  • .exe文件病毒
  • windows7远程桌面连接在哪里
  • 分配利润给股东怎么做分录
  • 期末未抵扣数
  • 印花税的计税
  • 跨年的费用可以直接入账吗
  • 当月交当月社保费会计分录
  • 0x0000000a蓝屏代码怎么解决
  • 补贴收入什么时候到账
  • 一体机笔记本电脑
  • 国有资产无偿使用违反什么规定
  • 期初留存收益包括
  • 佛罗里达naples
  • php获取路径和目录的方法
  • BEV(Bird’s-eye-view)三部曲之二:方法详解
  • 政府会计制度收入支出表
  • js前端路由
  • 限定性净资产的限定主体是
  • 员工在其他公司担任股东,违法吗
  • php 引入
  • 公司有收入可不交社保吗
  • 百旺如何作废发票
  • 预收帐款
  • 减值准备需要确认递延所得税资产吗
  • 地税发票丢失应如何处理
  • 进口原料需要交哪些税
  • 小规模纳税人的税率是多少
  • 企业所得税特殊事项
  • 建筑工程社会实践报告
  • 个人银行存款要手续费吗
  • 上年度会计凭证怎么填
  • 个体户建账吗
  • win8.1鼠标没反应
  • win10自动设置时间灰色
  • ubuntu20.4 ssh
  • osx10.11.6版本如何
  • win10缺少文件如何修复
  • win102020h2版本
  • shpc32.exe - shpc32是什么进程 有什么用
  • win7怎么给硬盘重新分区
  • win10系统自带功能
  • windows10打开此电脑
  • perl sub
  • cocos2dx 4.0更新内容
  • java物流管理系统
  • 合并一个文件夹下多个工作簿
  • android xui
  • 如何用node搭建服务器
  • node.js 配置
  • jquery控制css样式
  • 自动寻路小说
  • javascript的理解
  • 删除的照片怎么还原
  • 广东省税务局电子发票怎么下载
  • 车辆购置税怎么买
  • 代理记账公司前期准备流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设