Могу ли я получить доступ к файлу cookie от socket.io?

StackOverflow https://stackoverflow.com/questions/4754232

  •  15-10-2019
  •  | 
  •  

Вопрос

Я хочу установить некоторую информацию пользователя в 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», позволяет избежать этой проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top