让我解释一下我的设置。我有多个域名,它们都是主域名的 CNAME 记录,例如 example.com。
example.com -> 服务器IP
company1.example.com -> example.com
company2.example.com -> example.com
我基本上正在开发我们软件的白标版本,该软件只是检测引荐来源网址并知道要加载哪些 Logo 和样式表资源。
所以这一切都很好,但是当 socket.io 尝试与看起来像 http://company1.example.com/socket.io/1/?key=123456 的 url 握手时,请求在登录应用程序时挂起在挂起状态。在主域 example.com 上,一切都进展顺利。不同之处在于,主域将 cookie 发送到 socket.io 握手 URL,而公司子域则不会。
有人知道如何解决这个问题吗?它似乎甚至没有到达服务器,几分钟后,待处理的请求返回它无法完成。
最佳答案
我也遇到了类似的问题,发现问题出在我使用的 JS 客户端上。我通过将 withCredentials: true
添加到我的连接配置中解决了这个问题。
这是它的样子
import io from "socket.io-client";
const connectionObject = {
...,
withCredentials: true,
};
socket = io("http://127.0.0.1:5000" || "", connectionObject);
这将 Cookie 添加到对我的套接字服务器的调用中。
关于javascript - Socket.io 未在握手中发送 cookie,导致请求停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851603/