我想在 cookie 中设置一些用户信息并能够在连接时访问它,这可能吗?
问问题
40354 次
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 回答