在将一个WebSocket连接握手到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+"'}");
});
答案 0 :(得分:24)
WebSockets确实支持cookie,因为它们基于HTTP,但是快速浏览Socket.IO的来源显示内置的内容不支持。
因此,在这种情况下直接使用cookie并不是一个可行的解决方案,因为您使用的是Socket.IO,因此不能保证用户实际上会通过WebSocket连接。
在连接使用闪存套接字的情况下,很难让Flash发送浏览器的cookie而不是它自己的设置,所以即使你直接发送cookie,它也不会在浏览器中设置烧瓶插座连接的情况。
目前没有对Socket.IO内置的支持,因此闪存套接字会失败。
您可以在this issue中了解相关信息,这里有关于flash cookie problem的问题。
最佳解决方案仍然是将其作为自己协议的一部分。