位置: 编程技术 - 正文

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

  • 简易征收怎样计提增值税
  • 简易计税是什么税种
  • 增值税的视同销售行为有哪些?
  • 个人提供劳务报酬需要到税务局开发票吗?
  • 查账征收企业所得税年报怎么填
  • 财务人员培训费怎么入账
  • 减免税金需要计提吗
  • 房地产企业拆迁补偿契税政策
  • 期末账项调整的类型
  • 小规模公司核定增收税可以公账直接打给法人吗?
  • 长期股权投资属于金融资产吗
  • 环保公司开具发票怎么开
  • 今年补缴去年的税汇算清缴吗
  • 报废固定资产增值税税率
  • 两年内到期的应付票据
  • 取得的技术成果
  • 支票进账对方没钱开户行会打电话叫他存钱吗?
  • 商品流水账怎么做
  • 税收理财跟税收筹划有什么区别?
  • 小规模纳税人一个月能开多少税票
  • 应收股利的账务处理方法
  • windows11 怎么更新
  • qtaet2s.exe - qtaet2s是什么进程 有什么用
  • php laravel教程
  • unity默认存储路径
  • 设备进项抵扣新政策
  • 个税非居民是什么意思
  • 深入理解php内核
  • php改编码
  • 一次摊销法计算公式
  • 出租个人住房怎样交税
  • 海狸岛好玩吗
  • 天窗漏进来的水去哪了
  • laravel phpstudy
  • auto.js 逆向
  • php curl_setopt
  • 采矿权如何进行融资
  • 活动委托书范本
  • 免抵退申报汇总表在哪里
  • 房子是固定资产的好处
  • 所得税汇算清缴需要调增的项目
  • 织梦怎么新建页面
  • php的do while语句
  • 挖机租赁如何做账
  • 所得税做账是否需要发票
  • 农民工工资专户管理暂行办法
  • 个体工商户未年报 经营异常罚款
  • sql2019远程连接
  • 应付股利是否影响未分配利润
  • mysql主从复制实现原理
  • mysql select语句操作实例
  • 预付房租如何做分录
  • 暂时性差异的产生
  • 企业库存现金的限额是
  • 财政拨款公司的资金来源
  • 发票税控系统
  • 以物易物是什么时代
  • 单位食堂收费制度
  • 小企业固定资产折旧方法包括
  • 企业转让固定资产企业所得税
  • 微信支付属不属于电子商务
  • 将外购商品用于赠送客户
  • sql server ceiling
  • sql游标实例
  • 拖放文件到此处来添加文件是什么意思
  • “linux”
  • 关闭gui引导有什么用
  • win10预览版好吗
  • scrtkfg.exe - scrtkfg是什么进程 有什么用
  • windows8装 .NET 3.5 时出现0x800F0907错误解决方法
  • 安装win8正在安装应用要多久
  • javascript的基本语句
  • bootstrap导航有哪些
  • unity每秒执行一次
  • vue.js有什么用
  • javascript含义
  • 推荐几个非常有趣的书
  • 税控盘税务数字证书密码是什么
  • 预缴增值税是否要预缴城建税及附加
  • 一般纳税人办理退税流程及手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设