Posso accedere a un biscotto da Socket.io?
Domanda
Voglio impostare alcune informazioni utente in un cookie ed essere in grado di accedervi sulla connessione, è possibile?
Soluzione
client.request.headers.cookie
porta a condizioni di gara come il biscotto sempre punti per l'ultimo utente connesso.
Si prega di consultare:. Socket.IO Autenticazione
Altri suggerimenti
Utilizzando Socket.IO 0.8.7, è possibile accedere tramite intestazioni di richiesta:
socket.handshake.headers
Potete trovare maggiori dettagli su questo a https://github.com/LearnBoost/ socket.io/wiki/Authorizing
Ho capito, questo funziona:
client.request.headers.cookie
Dopo aver guardato al codice sorgente engine.io è possibile impostare i cookie utilizzando:
var io = require('socket.io')(3000);
io.use((socket, next) => {
socket.conn.transport.once('headers', (headers) => {
headers['set-cookie'] ="sess=test;"; });
next();
});
questo codice potrebbe entrare in conflitto con il codice engine.io che impostare il cookie sid. sia come / 1.1 e HTTP / 2 intestazioni HTTP sono case-insensitive e engine.io uso 'Set-Cookie' nelle intestazioni oggetto l'aggiunta di un nome di oggetto minuscolo 'set-cookie' permetterebbe di evitare questo problema.