WSS连接同域名/admin路径时发送错误Cookie问题排查
确认Cookie的Path属性配置
检查/admin路径下生成的Cookie是否明确设置了Path=/admin。浏览器发送Cookie时,只有Path匹配请求路径(或其父路径)的Cookie才会被包含在请求中。若根域名Cookie的Path为/(默认值),它会匹配所有子路径;但如果/admin的Cookie未正确设置Path,可能会被浏览器判定为不匹配WebSocket请求的/admin路径,导致未发送。检查Cookie的SameSite与Secure属性
若/admin的Cookie设置了SameSite=Strict,可临时改为SameSite=Lax测试是否影响发送。另外,HTTPS环境下Cookie需设置Secure属性才会被发送到WSS连接,若/admin的Cookie未开启Secure,浏览器会拒绝发送。用浏览器开发者工具验证实际发送的Cookie
打开开发者工具的Network面板,过滤WS类型请求,查看握手请求的Request Headers中的Cookie字段,确认浏览器是否真的发送了/admin路径的Cookie。如果这里没有该Cookie,问题出在浏览器的Cookie规则;如果有,但服务器没收到,再排查后端逻辑。排查Ratchet服务器端的Cookie处理逻辑
在服务器端打印完整的Cookie请求头(而非仅获取单个Cookie),确认是否收到了/admin的Cookie。若请求头里有但代码解析不到,检查是否是Ratchet的HttpServer组件在处理Upgrade请求时遗漏了Cookie,或是你的代码在获取Cookie时只读取了根域名的特定Cookie,未遍历所有Cookie。验证WebSocket连接路径的匹配性
确认WebSocket连接的路径wss://www.domain.com/admin与Cookie的Path完全一致。比如若Cookie的Path是/admin/(末尾带斜杠),而请求路径是/admin,可能导致浏览器判定路径不匹配,需统一两者的路径格式。
内容的提问来源于stack exchange,提问作者Hayden Thring

