nodejs 的 express-session 模块之 cookie.secure 选项使用注意事项-阿里云开发者社区

开发者社区> 安全> 正文

nodejs 的 express-session 模块之 cookie.secure 选项使用注意事项

简介: nodejs 的 express-session 模块之 cookie.secure 选项使用注意事项 请注意,将此设置为true时,如果浏览器没有使用HTTPS连接,客户端将不会将cookie发送回服务器。

nodejs 的 express-session 模块之 cookie.secure 选项使用注意事项

请注意,将此设置为true时,如果浏览器没有使用HTTPS连接,客户端将不会将cookie发送回服务器。

请注意,secure:true是推荐的选项。但是,它需要一个启用https的网站,即,安全cookie HTTPS是必需的。如果设置了安全,并且您通过HTTP访问您的网站,则不会设置Cookie。如果您的node.js位于代理后面并且正在使用 secure:true,则需要在express中设置“trust proxy”:

var app = express()
app.set('trust proxy', 1) // trust first proxy
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))
以上内容参考:https://github.com/expressjs/session#cookie
我个人的测试得到的结果是,如果设置了:secure:true 选项,服务端使用“req.session.user = query_doc.userid;”设置Cookie,但是通过Chrome的开发者工具查看,Response Header 中根本不会包含“set-cookie”,

也就是说 Cookie 根本不会发送给客户端浏览器。
rolling:强制在每一个response中都发送session标识符的cookie。如果把expiration设置为一个过去的时间那么 那么过期时间设置为默认的值。roling默认是false。如果把这个值设置为true但是saveUnitialized设置为false,那么cookie不会被包含在响应中(没有初始化的session)

secret 是必需的选项,这是用于签名会话ID cookie的密钥。这可以是单个密钥的字符串或多个秘密的数组。如果提供了一组密钥,只有第一个元素将用于签名会话ID cookie,而在验证请求中的签名时,将考虑所有元素。参考:https://github.com/expressjs/session

======================文档信息===========================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章