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

标签 cookies node.js websocket

在与 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+"'}");
});

最佳答案

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

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

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

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

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

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

关于cookies - 通过 WebSockets 连接到 socket.io 时如何发送 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311180/

相关文章:

javascript - 在 Jasmine/Node.js 中测试独立的 JS 文件

javascript - 如何正确分配开发与生产变量?

node.js - Raspberry Pi 3 脚本 RAM 使用情况

java - 在 Java Servlet 中,如何更改现有 cookie 的值?

Python selenium 如何加载浏览器的数据(cookies或书签)

node.js - 仅当 active = true 时 Sequelize ORM 包含模型

javascript - socket.io:点击时发出按钮的属性值?

python - Tornado:识别/跟踪 websocket 的连接?

browser - 电子邮件客户端如何处理 cookie?

asp.net - 当我向 HttpResponse 添加 cookie 时,如何删除 'no-cache="Set-Cookie"'?