38

我想在 cookie 中设置一些用户信息并能够在连接时访问它,这可能吗?

4

4 回答 4

37

使用 Socket.IO 0.8.7,您可以通过以下方式访问请求标头:

socket.handshake.headers

您可以在https://github.com/LearnBoost/socket.io/wiki/Authorizing找到更多详细信息

于 2012-02-21T21:49:54.237 回答
21

client.request.headers.cookie导致竞争条件,因为 cookie 总是指向最后登录的用户。

请参阅:Socket.IO 身份验证

于 2011-01-21T02:22:13.610 回答
4

我明白了,这有效:

client.request.headers.cookie
于 2011-01-21T01:31:03.760 回答
0

查看 engine.io 源代码后,您可以使用以下方法设置 cookie:

var io = require('socket.io')(3000);

io.use((socket, next) => {
    socket.conn.transport.once('headers', (headers) => {

        headers['set-cookie'] ="sess=test;"; });

    next();
});

此代码可能与设置 sid cookie 的 engine.io 代码冲突。因为 HTTP/1.1 和 HTTP/2 标头都不区分大小写,并且 engine.io 在标头对象中使用“Set-Cookie”添加小写对象名称“set-cookie”可以避免此问题。

于 2018-12-31T11:26:26.850 回答