我有一个运行在Cedar堆栈上的node.js应用程序,我很困惑为什么安全cookie无法正常工作。
"express": "3.0.3", "node": ">=0.8.14", ... app.use(express.session({ secret : 'somesecret', store : // store works fine, sessions are stored key : 'sid', cookie : { secure : true, // it works without the secure flag (cookie is set) proxy : true, // tried using this as well, no difference maxAge: 5184000000 // 2 months } })); ...
在localhost上,一切正常,但在heroku上,我似乎无法设置安全cookie。我究竟做错了什么?该文档称,负载平衡器终止SSL,它说的是配置在那里? 非常感谢
您认为Heroku在到达您的应用之前会先终止SSL。这导致express看到非SSL流量,这可能就是为什么在Heroku上运行时拒绝设置cookie的原因。
Heroku X-Forwarded-Proto使用原始协议设置标头。我尚未对此进行测试,但是根据文档,您必须通过trust proxy按此处所述设置告诉Express尊重该标头中的信息。其他详细信息请参见req.protocol 此处。
X-Forwarded-Proto
trust proxy
req.protocol