日期:2014-05-16 浏览次数:20424 次
以下代码是正在写的initnode框架中的代码,可能你在实现cookie的时候不能全部拷贝
cookie实现,主要是发送头部消息:
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;
所以要实现cookie设置,需要自己组装上面的cookie头信息,详细参照以下代码:set_cookie函数
/*
* 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
* 使用:
* 设置Cookie initnode.request.set_cookie('username', 'initnode', 30, '/');
* name cookie名称
* value cookie值
* expires 有效期时间,秒计算
* path 有效目录
* domain 域名
*/
this.del_cookie = function (name) {
this.set_cookie(name, '', -999);
return true;
}
/*
* 说明:header头部发送cookie设置信息
* 使用:
* 设置Cookie initnode.request.flush_cookie();
*/
this.flush_cookie = function () {
res.setHeader("Set-Cookie", cookieArr);
}
/*
* 说明:获取HTTP头部数据信息
* 使用:
* 获取单个 initnode.request.headers('accept');
* 获取多个 initnode.request.headers(['referer', 'referer']);
* 获取全部 initnode.request.headers('');
* 参数:accept referer accept-language user-agent content-type
* accept-encoding host content-length connection cache-control cookie
*/
this.headers = function (name) {
return this._requestData(name, req.headers);
};
/*
* 说明:获取客户端IP地址
* 使用:
* initnode.request.getClientIp();
*/
this.get