Express.js会话cookie在CloudFront中不能与secure = true一起使用

时间:2019-04-21 10:59:22

标签: node.js express amazon-cloudfront

为了使我的Web应用程序可以投入生产,我想将会话Cookie属性“安全”从false设置为true。 该应用程序由Aws托管,并且构建如下:

Route53-> CloudFront-> ELB(无群集,只有SingleApp)

CloudFront用于使应用程序可以通过SSL访问。 Nodejs应用程序在HTTP端口上侦听。 不幸的是,SessionCookie没有设置。

如果将secure设置为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

0 个答案:

没有答案