Могу ли я получить доступ к файлу cookie от socket.io?
Вопрос
Я хочу установить некоторую информацию пользователя в cookie и иметь доступ к ней на подключении, возможно ли это?
Решение
client.request.headers.cookie
Приводит к условиям гонки, так как файл cookie всегда указывает на последнего зарегистрированного пользователя.
Посмотри пожалуйста: Аутентификация Socket.io.
Другие советы
Используя Socket.io 0.8.7, вы можете получить доступ к заголовкам запросов через:
Socket.handshake.headers
Вы можете найти более подробную информацию об этом в https://github.com/learnboost/socket.io/wiki/authorizing
Я понял, это работает:
client.request.headers.cookie
Посмотрев на исходный код 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();
});
Этот код может противоречить коду Engine.io, который устанавливает файл cookie SID. Поскольку заголовки HTTP/1.1 и HTTP/2 нечувствительны к случаям, и Engine.io использует «Set-Cookie» в объекте заголовков, добавляя имя объекта строчных строк «Set-Cookie», позволяет избежать этой проблемы.