当前位置: 首页 > news >正文

项目复盘:websocket不受跨域限制的原理

主要还是因为:

1、WebSocket 是独立于 HTTP 的应用层协议,通过 HTTP 建立连接后,完全脱离 HTTP 语义约束。这意味着

  • 不受 HTTP 同源策略限制

  • 不需要预检请求

  • 不依赖 CORS 头机制

2、建立连接时的握手请求仍使用 HTTP 格式,但具有特殊标记:

类似于下述代码,当浏览器发起 WebSocket 连接时,会自动将当前网页的源(协议+域名+端口)填入 Origin 请求头。内部实现了跨域

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: https://client.example.com  // 关键跨域标识
Sec-WebSocket-Version: 13

   注:虽然目前服务端不做白名单校验也能成功,但为了安全还是要做一下di~

   服务端可以用下列代码进行验证以防恶意操作

wss.on('connection', (ws, req) => {
// 进行白名单校验
  const allowedOrigins = ['https://myapp.com', 'https://admin.myapp.com'];
  if (!allowedOrigins.includes(req.headers.origin)) {
    ws.close(1008, 'Invalid origin'); // 关闭非法来源连接
    return;
  }
}

相关文章:

  • MySQL数据库和表的操作
  • 【工具变量】地市地方债、政府债、隐形债相关数据(2007-2023年)
  • 《2核2G阿里云神操作!Ubuntu+Ollama低成本部署Deepseek模型实战》
  • 【MySQL】InnoDB中的MVCC
  • 软件测试常用设计模式
  • 每日算法-250328
  • 【C++数据库】SQLite3数据库连接与操作
  • Sentinel[超详细讲解]-2
  • 进制转换,base可能为负数
  • StarRocks 部署:依赖环境
  • Redis | 基于 Redis 实现机器列表 Token 缓存的 Java 实现
  • CSS——变换、过度与动画
  • 当贝AI知识库评测 AI如何让知识检索快人一步
  • 《数据库原理》SQLServer期末复习_题型+考点
  • Vue3当中el-tree树形控件使用
  • MyBatisPlus 中,模糊查询
  • SQL Server安装进度卡在 57%:Windows Update 服务异常
  • 基于大模型的自发性气胸全方位预测与诊疗方案研究
  • 数字人分身生成50语种发布会视频技术架构深度解析
  • 【蓝桥杯】单片机设计与开发,PWM
  • 望都网站建设/谷歌网站收录提交入口
  • 网站建设服务器租用/怎么自己做一个网站平台
  • 怎么做免流网站/网络推广都需要做什么
  • 商城网站建设哪家最好/南宁在哪里推广网站
  • 金华建设监理协会网站/高明搜索seo
  • wordpress $wpdb->get_results/seo发展前景怎么样啊