Node.js Connect session() 参数中的安全选项是什么

问题描述 投票:0回答:1

我正在研究以下

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
的会话中间件一起使用?

node.js session-cookies middleware javascript-framework node.js-connect
1个回答
1
投票

secure
参数为 HTTP cookies 设置安全标志

安全标志的目的是防止由于 cookie 以明文形式传输而被未经授权的各方观察到。 为了实现这一目标,支持安全标志的浏览器只会在请求转到 HTTPS 页面时发送带有安全标志的 cookie。换句话说,浏览器不会通过未加密的 HTTP 请求发送带有安全标志的 cookie。

在您的情况下,安全 cookie 可能根本不会发送,因为您没有通过 HTTPS 提供页面。

© www.soinside.com 2019 - 2024. All rights reserved.