【问题标题】:How to send cookies when connecting to socket.io via WebSockets?通过 WebSockets 连接到 socket.io 时如何发送 cookie?
【发布时间】:2011-05-17 16:57:06
【问题描述】:

在与 socket.io 握手 WebSocket 连接时,有没有一种方法可以轻松传递身份验证 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+"'}");
});

【问题讨论】:

    标签: cookies node.js websocket


    【解决方案1】:

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

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

    如果一个连接使用了一个flash socket,真的很难让Flash发送浏览器的cookie而不是它自己的设置,所以即使你直接发送一个cookie,它也不会在浏览器中设置烧瓶套接字连接的情况。

    目前 Socket.IO 中不支持此功能,因此闪存套接字会失败。

    您可以在this issue 中阅读相关内容,这里有一个关于flash cookie problem 的问题。

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

    【讨论】:

    • 仅供参考,此问题已在 socket.io 0.7 及更高版本中得到解决。
    • 如何解决的?你能澄清一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    相关资源
    最近更新 更多