Node.js Connect session() 参数中的安全选项是啥
Posted
技术标签:
【中文标题】Node.js Connect session() 参数中的安全选项是啥【英文标题】:What is the secure option in Node.js Connect session() paramsNode.js Connect session() 参数中的安全选项是什么 【发布时间】:2014-05-09 22:56:44 【问题描述】:我正在处理以下Connect
示例:
var connect = require ('connect');
var timeout = 30000; // session timeout: 30 seconds
var sessionOpts =
secret: 'keyboard cat',
key: 'myapp_sid',
cookie: maxAge: timeout, secure: true /*Example doesn't work with secure?*/
;
var app = connect ()
.use (connect.favicon())
.use (connect.cookieParser ('keyboard cat'))
.use (connect.session(sessionOpts))
.use (function (req, res, next)
var sess = req.session;
if (sess.views)
res.setHeader ('Content-Type', 'text/html');
res.write ('<p>views: ' + sess.views + '</p>');
res.end();
sess.views++;
else
sess.views = 1;
res.end ('welcome to the session demo. refresh!');
)
.listen (3000);
当我访问该站点时,如果 cookie 选项不包括 secure: true
,则查看次数会增加并在 30 秒后重置。当我包含安全选项时,会话不再停留 30 秒,每次刷新都会重置。
什么是安全选项?如何将它与Connect
的会话中间件一起使用?
【问题讨论】:
【参考方案1】:secure
参数为 HTTP cookie 设置 secure flag:
安全标志的目的是防止 cookie 因以明文形式传输 cookie 而被未授权方观察到。 为了实现这一目标,支持安全标志的浏览器只会在请求转到 HTTPS 页面时发送带有安全标志的 cookie。换句话说,浏览器不会在未加密的 HTTP 请求上发送设置了安全标志的 cookie。
在您的情况下,可能根本不会发送安全 cookie,因为您没有通过 HTTPS 提供您的页面。
【讨论】:
以上是关于Node.js Connect session() 参数中的安全选项是啥的主要内容,如果未能解决你的问题,请参考以下文章
Node.js/Express.js 会话管理 cookie 为会话 cookie
什么是 Node.js 的 Connect、Express 和“中间件”?