node中cookie的使用

cookie是http中一个基本的组成,用来记录服务器和客户端的状态,可以标识和认证客户。当服务器在返回报文中设置了cookie后,客户端以后每次请求(相同域名)都会附带这个cookie(未过期的)。

'use strict'

//cookie 的使用
var http = require('http');

//生成cookie
var serialize = function (name, val, opt){
    var pairs = [name + '=' + encodeURI(val)];
    opt = opt || {};
    //Max_Age 告诉浏览器这个cookid多久后过期,与此类似的还有Expaires属性
    if(opt.maxAge) pairs.push('Max-Age=' + opt.maxAge);
    //域
    if(opt.domain) pairs.push('Domain=' + opt.domain);
    //路径
    if(opt.path) pairs.push('Path=' + opt.path);
    //在什么时间点过期
    if(opt.expires) pairs.push('Expires=' + opt.expires.toUTCString());
    //设置后只有在服务器才能访问cookie
    if(opt.httpOnly) pairs.push('HttpOnly');
    //设置后只有https中cookie才起作用。
    if(opt.secure) pairs.push('Secure');

    return pairs.join(';');
}

//解析cookie
var parseCookie = function(cookie){
    var cookies = {};
    if(!cookie){
        return cookies;
    };
    var list = cookie.split(';');
    for(let i = 0; i < list.length; i++){
        var pair = list[i].split('=');
        cookies[pair[0].trim()] = pair[1];
    }
    return cookies;
}

const server = http.createServer(function base(req,res){
    console.log(req.method);
    console.log(req.url);

    req.cookies = parseCookie(req.headers.cookie);
    if(!req.cookies.isVisit){

        res.setHeader('Set-Cookie',serialize('isVisit','1','utf8',{maxAge : '5000'}));
        res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
        res.end('<h1>初次见面</h1>');
    }else{
        res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
        res.end('<h1>再次见面</h1>');
    }
});
server.listen(8899);

console.log('Server running');

但每次向服务器发送cookie(cookie过多)时会影响性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值