Сеансовые куки-файлы Express.js не работают с secure = true в CloudFront - PullRequest
0 голосов
/ 21 апреля 2019

Чтобы мой веб-приложение было готово к работе, я хотел установить для свойства сеансового cookie "secure" с false на true.Приложение размещено на Aws и построено следующим образом:

Route53 -> CloudFront -> ELB (без кластера, только SingleApp)

CloudFront используется, чтобы сделать приложение доступным через SSL.Приложение Nodejs прослушивает порт HTTP.К сожалению, SessionCookie не установлен.

Если я установил для параметра безопасности значение false, логин работает, и файл cookie сеанса установлен.Так что это только кажется, зависит от этого свойства.Я также установил для доверенного прокси значение true, но, к сожалению, безуспешно.

Express.js:

const ExpressApp=express();
ExpressApp.set("trust proxy", (ip)=>{
    return true;
  });
...

сеанс:

  const expiryDate = new Date( Date.now() + 60 * 60 * 1000 ); // 1 hour
        return session({
            genid: (req) => {
                return uuid() // use UUIDs for session IDs
            },
            secret: process.env.SESSION_SECRET,
            resave: false,
            saveUninitialized: true,        
            proxy:true,    
            store: new MongoStore({ mongooseConnection: mongoose.connection }),
            rolling: true,
            cookie:{
                secure:true,
                httpOnly:true,
                expires: expiryDate
            }
        })

CloudFront: https://pasteboard.co/Ib9mTED.png

...