当前位置:编程学习 > JS >>

nodejs 实现cookie

以下代码是正在写的initnode框架中的代码,可能你在实现cookie的时候不能全部拷贝
cookie实现,主要是发送头部消息:
[javascript] 
res.setHeader("Set-Cookie", cookieArr);  
res.setHeader("Set-Cookie", ['username=xxx', 'age=xxx;path=/foo']); //注意:多个cookie需要一次发送,多次调用这个发送头部函数只生效最后一次 
完整的HTTP SETCOOKIE头:
Set-Cookie:customer=huangxp; path=/foo;domain=.ibm.com;
expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]
所以要实现cookie设置,需要自己组装上面的cookie头信息,详细参照以下代码:set_cookie函数
[javascript] 
/*
 *  initNode框架  Request 请求类
 *  核心函数
 */ 
var request = function () { 
 
    var _this       = this; 
    var req         = null; //request对象 
    var res         = null; 
    var postData    = null; //存放POST数据 
    var getData     = null; //存放GETDATA数据 
    var cookieData  = null; //存放cookie数据 
    var cookieArr   = []; //存放cookie输出数据 
    var url         = require("url"); 
    var util        = require('util'); 
    var querystring = require('querystring'); 
    var os          = require('os'); 
 
     
    /*  
     *  说明:Request 请求初始化
     */ 
    this.init = function (initnode) { 
        req         = initnode.req; 
        res         = initnode.res; 
        postData    = this._post(initnode.postData); 
        getData     = this._get(req); 
        cookieData  = this._cookie(req); 
    }; 
 
    /*  
     *  说明:GET方法,获取URL中的GET提交数据
     *  使用:
     *  获取单个    initnode.request.get('username');
     *  获取多个    initnode.request.get(['username', 'age']);
     *  获取全部    initnode.request.get('');
     */ 
    this.get = function (name) { 
        return this._requestData(name, getData); 
    }; 
 
     
    /*  
     *  说明:POST方法,获取URL中的POST提交数据
     *  使用:
     *  获取单个    initnode.request.post('username');
     *  获取多个    initnode.request.post(['username', 'age']);
     *  获取全部    initnode.request.post('');
     */ 
    this.post = function (name) { 
        return this._requestData(name, postData); 
    }; 
 
    /*  
     *  说明:COOKIE方法,获取URL中的COOKIE提交数据
     *  使用:
     *  获取单个    initnode.request.get_cookie('username');
     *  获取多个    initnode.request.get_cookie(['username', 'age']);
     *  获取全部    initnode.request.get_cookie('');
     */ 
    this.get_cookie = function (name) { 
        return this._requestData(name, cookieData); 
    }; 
     
    /*  
     *  说明:设置COOKIE
     *  使用:
     *  设置Cookie initnode.request.set_cookie('username', 'initnode', 30, '/');
     *  name    cookie名称
     *  value   cookie值
     *  expires 有效期时间,秒计算
     *  path    有效目录
     *  domain  域名
     */ 
    this.set_cookie = function (name, value, expires, path, domain) { 
        var cookieSrt = ''; 
        cookieStr = name + '=' + value + ';'; 
        //cookie有效期时间 
        if (expires != undefined) { 
            expires = parseInt(expires); 
            var today = new Date(); 
            var time = today.getTime() + expires * 1000; 
            var new_date = new Date(time); 
            var expiresDate = new_date.toGMTString(); //转换成GMT 格式。 
            cookieStr += 'expires=' +  expiresDate + ';'; 
        } 
        //目录 
        if (path != undefined) { 
            cookieStr += 'path=' +  path + ';';  
        } 
        //域名 
        if (domain != undefined) { 
            cookieStr += 'domain=' +  domain + ';';  
        } 
        cookieArr.push(cookieStr); 
        return true; 
    } 
     
    /*  
     *  说明:设置COOKIE
     *  使用:补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,