본문 바로가기

express

express session cookie 값이 넘어오지 않을 때

개발 환경일 때, https 를 사용하지 않고 http를 사용할 때 쿠키가 넘어오지 않는 현상이 나타날 때가 있다.

const expressSession = require('express-session');

app.use(
    expressSession({
        secret: 'secret',
        resave: false,
        saveUninitialized: false,
        store: sessionStore,
        name: 'connect.sid',
        rolling: true,
        cookie: {
            httpOnly: true,
            // secure: true, 이 부분을 true로 할 경우 https에서만 쿠키를 전달함
            maxAge: 1000 * 60 * 60 * 24,
        },
    })
);

위 소스처럼 express session의 cookie 값에 secure를 true로 할 경우 http 환경에서는 쿠키가 넘어오지 않는다.

production 환경에서는 설정해둬야 하지만 개발환경, http 일 때는 사용하지 않을 수 있도록 수정해두자

const expressSession = require('express-session');

app.use(
    expressSession({
        secret: 'secret',
        resave: false,
        saveUninitialized: false,
        store: sessionStore,
        name: 'connect.sid',
        rolling: true,
        cookie: {
            httpOnly: true,
            secure: process.env.NODE_ENV === 'production',
            maxAge: 1000 * 60 * 60 * 24,
        },
    })
);