Socket.io 未在握手中发送 cookie,导致请求停止

jrt*_*hib 4 javascript sockets websocket node.js socket.io

让我解释一下我的设置。我有多个域名,它们都是主域名的 CNAME 记录,例如 example.com。

example.com -> 服务器IP

company1.example.com -> example.com

company2.example.com -> example.com

我基本上正在开发我们软件的白标版本,该软件只是检测引荐来源网址并知道要加载哪些徽标和样式表资源。

所以这一切都很好,但是当 socket.io 尝试与它的 url 握手时,它看起来像http://company1.example.com/socket.io/1/?key=123456,请求会挂起在待处理状态登录应用程序时注明。在主域 example.com 上,一切都进展顺利。不同之处在于,主域将 cookie 发送到 socket.io 握手 URL,而公司子域则不然。

有人对如何解决这个问题有任何想法吗?它似乎甚至没有到达服务器,几分钟后,待处理的请求返回它无法完成。

Chi*_*ere 8

我也遇到了类似的问题,发现问题出在我使用的 JS 客户端上。我通过添加withCredentials: true到我的连接配置解决了这个问题。

这是它的样子

import io from "socket.io-client";

const connectionObject  = {
  ...,
  withCredentials: true,
};
socket = io("http://127.0.0.1:5000" || "", connectionObject);

Run Code Online (Sandbox Code Playgroud)

这将 Cookie 添加到对我的套接字服务器的调用中。