一尘不染

通过WebSockets连接到socket.io时如何发送cookie?

node.js

当与socket.io握手时,是否可以轻松地传递身份验证cookie?我目前必须分别进行操作,如下所示:

socket = new io.Socket(document.location.hostname);
socket.addEvent("connect", function()
{
    // Send PHP session ID, which will be used to authenticate
    var sessid = readCookie("PHPSESSID");
    this.send("{'action':'authenticate','sessionid':'"+sessid+"'}");
});

阅读 318

收藏
2020-07-07

共1个答案

一尘不染

WebSockets确实支持cookie,因为它们是基于HTTP的,但是快速浏览Socket.IO的源代码显示不支持此内置。

因此,在这种情况下,直接使用cookie并不是可行的解决方案,而且,由于您使用的是Socket.IO,因此不能保证用户实际上会通过WebSocket进行连接。

如果连接使用Flash套接字,则很难使Flash发送浏览器的cookie而不是它自己设置的cookie,因此,即使您直接发送cookie,如果出现错误,也不会在浏览器中进行设置。烧瓶插座连接。

当前Socket.IO内置对此不支持,因此闪存套接字将失败。

您可以在本期中了解到这一点

最好的解决方案仍然是使其成为您自己的协议的一部分。

2020-07-07