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

主要还是因为:

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

  • 不受 HTTP 同源策略限制

  • 不需要预检请求

  • 不依赖 CORS 头机制

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

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

javascript 复制代码
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~

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

javascript 复制代码
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;
  }
}
相关推荐
盈创力和20076 小时前
物联网 “神经” 之以太网:温湿度传感器的工业级 “高速干道”
运维·服务器·网络·嵌入式硬件·以太网温湿度传感器
余生皆假期-7 小时前
IIC 通讯详解——以 OSI 模型分析 物理层、数据链路层和应用层
网络
李辉20037 小时前
Python逻辑运算符
java·网络·python
平凡而伟大(心之所向)7 小时前
TCP Socket(TCP 套接字)和 WebSocket 区别详解
websocket·网络协议·tcp/ip
火车叨位去19497 小时前
计算机网络R2025秋(TYUT)【计算机网络】第5章 运输层
网络·tcp/ip·计算机网络
huangql5207 小时前
HTTP协议与WebSocket完整技术指南
websocket·网络协议·http
打不了嗝 ᥬ᭄10 小时前
传输层协议TCP
linux·服务器·网络·c++·tcp/ip
Rysxt_10 小时前
UDP请求解析教程:深入理解请求头、请求体与参数机制
网络·网络协议·udp
小马哥编程10 小时前
JWT 是由哪三个部分组成?如何使用JWT进行身份认证?
网络协议·http·架构·ssh
noravinsc11 小时前
https 可以访问 8866端口吗
网络协议·http·https