美文网首页
nodejs操作cookie

nodejs操作cookie

作者: Veb | 来源:发表于2018-06-27 09:57 被阅读0次

    cookie可以记录用户操作状态,在服务器端也可以操作cookie,这也是session会话控制的依据点。

    1.获取cookie

    通过req.headers.cookie拿到cookie字符串:

    var http = require('http');
    http.createServer(function (req, res) {
        // 获得客户端的Cookie
        var Cookies = {};
        req.headers.cookie && req.headers.cookie.split(';').forEach(function( Cookie ) {
            var parts = Cookie.split('=');
            Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
        });
        console.log(Cookies)
        res.end('Hello World\n');
    }).listen(8000);
    

    2.设置cookie

    基础设置:

    res.writeHead(200, {
            'Set-Cookie': 'myCookie=test',
            'Content-Type': 'text/plain'
    });
    

    多组设置:

    res.writeHead(200, {
         'Set-Cookie': ["aaa=bbb","ccc=ddd","eee=fff"],
         'Content-Type': 'text/plain'
     });
    

    但真正使用时,我们的Cookie并非这样简单的的格式,需要设置过期时间等等:

    res.writeHead(200, {
            'Set-Cookie': 'myCookie=test; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ',
            'Content-Type': 'text/html'
    });
    
    • HttpOnly 属性: 这是微软对Cookie做的扩展。如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
    • Expires属性:指定过期时间,格式为"name=value;; expires=GMT_String";其中GMT_String是以GMT格式表示的时间字符串,超过这个时间,Cookie将消失,不可访问。
    • Secure属性: 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。同上,在客户端我们也无法在document.Cookie找到被设置了Secure=trueCookie键值对。Secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取Cookie后进行攻击。我们可以把Secure=true看成比HttpOnly更严格的访问控制。
    • path属性: 指定可访问Cookie的目录。例如:"userId=320; path=/shop";就表示当前Cookie仅能在shop目录下使用。

    相关文章

      网友评论

          本文标题:nodejs操作cookie

          本文链接:https://www.haomeiwen.com/subject/tyxbyftx.html