Задать вопрос

Node JS + Socket.io Как получить конкретное значение cookie?

Пытаюсь получить конкретное значение cookie для авторизации.
io.configure(function (){
    io.set('authorization', function (handshakeData, callback) {
        var cook = handshakeData.headers.cookie;
        console.log(cook);
        callback(null, true); // error first callback style
    });
});


Получаю то ли массив, то ли строку. При использовании .indexOf() и .split() сервер не поднимается.

В первом случае пишет: TypeError: Cannot call method 'indexOf' of undefined
Во втором: TypeError: Cannot call method 'split' of undefined

Мне нужно получить для проверки всего одну запись cookie, а не целый массив.
  • Вопрос задан
  • 8430 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя Burgul К ответам на вопрос (2)
@Burgul Автор вопроса
//Проверка на авторизацию
io.configure(function (){
    io.set('authorization', function (handshakeData, callback) {
        function parseCookies () {
            var list = {},
                rc = handshakeData.headers.cookie;

            rc && rc.split(';').forEach(function( cookie ) {
                var parts = cookie.split('=');
                list[parts.shift().trim()] = unescape(parts.join('='));
            });
            return list;
        }
        var cookies = parseCookies();
        //Проверяем, определена ли конкретная кука
        if(cookies['login'] != undefined){
                callback(null, true);
        }
        else{
            callback(null, false);
        }
    });
});
Ответ написан