Javascript Socket.io未在握手中发送Cookie,导致请求暂停
让我解释一下我的设置。我有多个域名,它们都是主域名的CNAME记录,例如example.com example.com->serverIP company1.example.com->example.com company2.example.com->example.com 我基本上是在开发我们的软件的白色标签版本,软件只是检测引用者并知道要加载哪些徽标和样式表资产 所以这一切都很好,但是当socket.io尝试与它的url握手时,请求在登录到应用程序时处于挂起状态。在主域名example.com上,一切都很顺利。数据引用是主域向socket.io握手URL发送cookie,而公司子域不发送cookie 有人对如何解决这个问题有什么想法吗?它甚至没有到达服务器,几分钟后,挂起的请求返回无法完成的消息。您有两个选择:Javascript Socket.io未在握手中发送Cookie,导致请求暂停,javascript,node.js,sockets,websocket,socket.io,Javascript,Node.js,Sockets,Websocket,Socket.io,让我解释一下我的设置。我有多个域名,它们都是主域名的CNAME记录,例如example.com example.com->serverIP company1.example.com->example.com company2.example.com->example.com 我基本上是在开发我们的软件的白色标签版本,软件只是检测引用者并知道要加载哪些徽标和样式表资产 所以这一切都很好,但是当socket.io尝试与它的url握手时,请求在登录到应用程序时处于挂起状态。在主域名example.co
origins
server选项。您可以将它们设置为*:*
或*example.com:
请检查此问题:我有一个类似的问题,发现问题来自我正在使用的JS客户端。我通过将
with credentials:true
添加到我的连接配置中解决了这个问题
这是它的样子
从“socket.io客户端”导入io;
常量连接对象={
...,
事实上,
};
套接字=io(“http://127.0.0.1:5000“| |”,连接对象);
这为我的套接字服务器的调用添加了Cookies。处理授权的代码是什么?我建议停止基于cookie的授权,并将其更改为使用令牌。我将尝试删除cookie方法,但它看起来似乎还没有达到授权阶段。它实际上只是挂着,没有向前移动。我在握手和授权代码中添加了
console.log
语句,但它们甚至没有出现。更多信息:我刚刚得到一个对于example.com/socket.io/1/URL,没有“访问控制允许来源”。您知道如何允许该URL具有某些来源吗?@jrthib如果您使用的是Express,您可以查看中间件模块。您是否正确设置了socket.io的名称?试着将它设置为*:*
,看看它是否有效。非常感谢你花了两个小时来坚持这一点。