位置: 编程技术 - 正文

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

  • 怎么做税种
  • 留抵税额是什么意思啊
  • 现在开票还能用三方协议吗
  • 装修费用摊销是当月还是次月
  • 小规模纳税人需要做进项税吗
  • 转回存货跌价准备对递延所得税资产的影响
  • 企业审计费入什么科目
  • 公司代个人收承兑汇票
  • 母公司吸收合并全资子公司土地增值税
  • 无形资产研发费用加计扣除是晢时差异吗
  • 动漫产业增值税优惠政策
  • 民办非企业单位是什么单位性质
  • 子公司向母公司借款
  • 设备租赁公司购进设备怎么做账
  • 公司外来人员进入公司
  • 特许权使用费预扣预缴计算方法
  • 农业公司没发票可以入账吗
  • 开餐饮发票的经营范围是怎样的?
  • 国税地税企业所得税划分
  • 其他应付款转增股本
  • 货款部分红冲进项转出如何做账?
  • 固定资产报废账目
  • 两年利润都为负数,如何计算完成率
  • 员工收到货款不交公司,法律规定
  • 单位低价向职工售房个人所得税计算
  • 季度利润
  • 银行交纳进口关税政策
  • 一个网页账号在多个电脑登录
  • 包吃伙食费会计分录
  • win10重置此电脑的密码是什么
  • 工资和薪金是一回事吗
  • 个人开发是什么意思
  • 电脑开机需要按ctrl+alt+del怎么取消
  • win10怎么调出命令行窗口
  • 生产车间工人发放福利
  • 开发商未出售的房子有产权证吗
  • ampa.exe是什么
  • 消费税和增值税的征税范围有何不同
  • uniapp vuecli
  • 存货核算有哪些内容
  • 建设工程施工合
  • 商品交换包括
  • 农产品收购发票是普票还是专票
  • 有问题的原始凭证是什么
  • 用友t3财务报表导出
  • mysql主键和索引
  • SQL(MSSQLSERVER)服务启动错误代码3414的解决方法
  • mysql数据类型和索引
  • 职工报销费用
  • 销售人员的提成属于什么工资
  • 建筑行业有哪些生意可以做
  • 固定资产清理的税率是多少
  • 固定资产抵账的账务处理
  • 进口增值税与关税的关系
  • 红冲发票视频教程
  • 个体户银行开户所需资料
  • 标准成本法计算公式图
  • 各单位都需设置的是
  • sql注入讲解
  • sql server的mdf文件怎么导入数据库
  • firefox干啥的
  • windows屏蔽网络设置的方法不包括以下哪种
  • win7开启路由功能
  • windows10磁盘100%占用解决
  • vsftpd 配置限制用户目录
  • linux怎么操作命令
  • 使用jquery操作dom
  • jquery动画库
  • nodejs函数返回值
  • android PercentRelativeLayout 支持百分比来设置控件的宽高
  • linux命令scp和sftp详细介绍
  • node.js 开发工具
  • unity协程会阻塞主线程吗
  • 有趣的单机游戏
  • Android studio 打包apk后卡在首屏
  • js的类型有哪几种
  • dom4j解析xml字符串步骤
  • 江苏增值税发票代码
  • 税务注销后发现报表报错的怎么办
  • 查询产品真伪怎么查询app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设