我想在Cookie中设置一些用户信息,并且能够在连接时访问它,这可能吗?
答案 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始终指向最后登录的用户。
答案 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'可以避免此问题。