【发布时间】:2011-06-12 20:36:31
【问题描述】:
我想在cookie中设置一些用户信息,并能够在连接时访问它,这可能吗?
【问题讨论】:
我想在cookie中设置一些用户信息,并能够在连接时访问它,这可能吗?
【问题讨论】:
我明白了,这行得通:
client.request.headers.cookie
【讨论】:
client.request.headers.cookie 导致竞争条件,因为 cookie 总是指向最后登录的用户。
【讨论】:
使用 Socket.IO 0.8.7,您可以通过以下方式访问请求标头:
socket.handshake.headers
您可以在https://github.com/LearnBoost/socket.io/wiki/Authorizing找到更多详细信息
【讨论】:
查看 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”可以避免此问题。
【讨论】: