fix(relay): 上游握手不再发送 Referer(对齐浏览器真实握手)
- 依据:官方 Copy-as-cURL 的握手头里没有 Referer —— 浏览器发起的 WebSocket 握手本身不带它 - 实测:用原版头直连 wss://c1.3dtank.com:9090/ 可保持连接(8s 超时退出);而中继因多带 Referer 被上游 code=1000 关闭(短命连接) - 仅删 Referer;Origin 仍强制覆盖为 https://3dtank.com(本机 origin 会被上游拒)
This commit is contained in:
1 parent
1b487fbdd6
commit
ab4c31311c
1 file changed
+4
-2
@@ -537,10 +537,12 @@ WsServer.on('connection', (Client, Req) => {
|
||||
UpHeaders[L] = Req.headers[K];
|
||||
}
|
||||
if (!UpHeaders['user-agent']) UpHeaders['user-agent'] = UPSTREAM_HEADERS['user-agent'];
|
||||
// Origin/Referer **强制用真实站点的值**:前端(浏览器)带的是本机地址 http://localhost:8080,
|
||||
// Origin **强制用真实站点的值**:前端(浏览器)带的是本机地址 http://localhost:8080,
|
||||
// 真实服务器会据此校验来源,必须覆盖,不能透传。
|
||||
UpHeaders['origin'] = UPSTREAM_HEADERS.origin;
|
||||
UpHeaders['referer'] = UPSTREAM_HEADERS.referer;
|
||||
// Referer:**不要加**。浏览器发起的 WebSocket 握手本身不带 Referer(见官方 Copy-as-cURL 的握手头),
|
||||
// 带上它会让上游把连接识别为「非浏览器来源」——实测疑似导致「复用哈希的二次连接」被 code=1000 关闭。
|
||||
delete UpHeaders['referer'];
|
||||
// 诊断:打印**发往上游**的真实握手来源(注意与上面「来源: … Origin: …」那行区分开 ——
|
||||
// DevTools 里看到的本机 Origin 是「浏览器→中继」这一段,页面 JS 改不了;中继改的是「中继→上游」这一段)
|
||||
State.Log(
|
||||
|
||||
Reference in new issue
Block a user