Kann ich von socket.io auf ein Cookie zugreifen?
Frage
Ich möchte einige Benutzerinformationen in einem Cookie festlegen und in der Verbindung darauf zugreifen können. Ist dies möglich?
Lösung
client.request.headers.cookie
führt zu Rennbedingungen, da der Cookie immer auf den zuletzt angemeldeten Benutzer zeigt.
Bitte siehe: Socket.io Authentifizierung.
Andere Tipps
Mit Socket.io 0.8.7 können Sie über: Anforderungsheader zugreifen:
Socket.handshake.Headerers
Weitere Details finden Sie darin unter https://github.com/learnboost/socket.io/wiki/uthorizing
Ich habe es verstanden, das funktioniert:
client.request.headers.cookie
Nachdem Sie auf den Quellcode von Engine.IO geschaut haben, können Sie Cookies mit:
var io = require('socket.io')(3000);
io.use((socket, next) => {
socket.conn.transport.once('headers', (headers) => {
headers['set-cookie'] ="sess=test;"; });
next();
});
Dieser Code könnte mit dem Code von Engine.io in Konflikt stehen, der das Sid Cookie festlegt. Da sowohl HTTP/1.1- als auch HTTP/2-Header von Fall unempfindlich sind, und Engine.