为了使我的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