我可以从Socket.io访问cookie吗?

时间:2011-01-21 00:27:44

标签: node.js socket.io

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

4 个答案:

答案 0 :(得分:32)

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

  

socket.handshake.headers

您可以在https://github.com/LearnBoost/socket.io/wiki/Authorizing

找到更多详细信息

答案 1 :(得分:16)

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

请参阅:Socket.IO Authentication

答案 2 :(得分:2)

我明白了,这有效:

client.request.headers.cookie

答案 3 :(得分:-1)

查看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'可以避免此问题。