问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nodejs怎么设置cookie

发布网友 发布时间:2022-04-23 01:17

我来回答

1个回答

热心网友 时间:2022-04-11 23:25

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)
// 向客户端设置一个Cookie
res.writeHead(200, {
'Set-Cookie': 'myCookie=test',
'Content-Type': 'text/plain'
});
res.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

如果去掉其中几句,就是官方给出的例子,除了表明返回一个页面多简单外,一点用也没有。

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

我们通过http.createServer的回调来处理所有请求与响应,因此什么有用的东西都在它们上面。Cookie位于req对象的headers对象上,为一个字符串,通常为了方便我们将它们转换成一个对象。
写入一个Cookie其实就是在首部设置一个键值对,上面是简单方式,它实际上可以这样:

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

但真正使用时,我们的Cookie并非这样简单的的格式:

Set-Cookie: =[; =]
[; expires=][; domain=]
[; path=][; secure][; HttpOnly]
console.log('Server running at http://r.yuzhua.com/');

HttpOnly 属性: 这是微软对Cookie做的扩展。如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

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)
// 向客户端设置一个Cookie
res.writeHead(200, {
'Set-Cookie': 'SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ',
'Content-Type': 'text/html'
});
res.end('Hello World\n<script>console.log(document.Cookie)</script>');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

然后多刷几次页面,我们发现我们还能在控制台看到SSID=Ap4GTEq这个属性,但在前端我们看不到它(当然在firebug中能看到)。
Secure属性: 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。同上,在客户端我们也无法在document.Cookie找到被设置了Secure=true的Cookie键值对。Secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取Cookie后进行攻击。我们可以把Secure=true看成比HttpOnly更严格的访问控制。
path属性: 指定可访问Cookie的目录。例如:"userId=320; path=/shop";就表示当前Cookie仅能在shop目录下使用。
domain属性: 指定可访问Cookie的主机名.主机名是指同一个域下的不同主机,例如:www.google.com和gmail.google.com就是两个不同的主机名。默认情况下,一个主机中创建的Cookie在另一个主机下是不能被访问的, 但可以通过domain参数来实现对其的控制,其语法格式为:"name=value; domain=CookieDomain";以google为例,要实现跨主机访问,可以写为: "name=value;domain=.google.com";这样,所有google.com下的主机都可以访问该Cookie。
Expires属性:指定过期时间,格式为"name=value;; expires=GMT_String"; 其中GMT_String是以GMT格式表示的时间字符串,超过这个时间,Cookie将消失,不可访问。例如:如果要将Cookie设置为10天后过期,可以这样实现:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
多特后防四大天王是哪些 iPhoe4还原所有设置后变成语音朗读而且滑屏无法正常使用 金鱼在鱼缸里几天能不会死掉? 金鱼放鱼缸多久合适 金鱼放鱼缸的时间 想学会缅甸语请问大神昆明附近有没有好一点的班? 昆明哪里可以学缅甸语?哪里不贵,哪里有优势? 昆明哪里可以学缅甸语啊?想去学几个月。 要出去缅甸出差一段时间,请问下昆明什么地方有好的缅甸语培训?? 叔叔要去缅甸做生意,帮他找间学校学缅甸语,简单的就行了,只有两个月... 昆明学缅甸语哪里学呀??? 想学几个月,再去一次缅甸。 用nodejs实现一个较完整的登录注册功能需要用到哪些模块 关于腾讯云短信接口的sig字段,sha256加密问题,nodejs oppo官方商城 oppo官方旗舰商城 nodejs后台生成验证码时到前台为啥不显示?图片路径也变了 我用的nodejs,邮箱发送验证码功能在本地测试可以,在云服务器上为什么不... oppo手机官网? ...能不能通过nodejs实现接听电话和发送短信的功能呢。电话是电脑上的... 想哭死了,怎么阿里云的发短信那接口,怎么用nodejs写 如何解析nodejs中send方法发送的数据 求助:nodejs如何实现短信验证功能 佳能单反拍摄微距的技巧是什么? 想拍鸽子眼睛要用佳能什么镜头,是不是微距镜头? 佳能70D配什么微距镜头好 推荐个微距镜头佳能口 佳能760拍微距用什么镜头好? 入门级佳能单反配什么微距镜头好 佳能7D 拍微距用什么镜头好? 佳能百微镜头都能拍什么 佳能最好的微距镜头是哪个 怎么进入OPPO官网? Nodejs 8有哪些重要功能和修复 京东OPPO官方自营旗舰店是正品吗? nodejs 怎么执行 crc32 在OPPO手机上的OPPO商城买的手机可靠吗?和实体店买的一样吗? nodejs搭建服务器有什么用 买oppo手机,去哪里放心! 手机上OPPO商城却比我在实体店里买的便宜 400多 怎么办 欢太商城里的OPPO手机是官方正品么? 在oppo官网可以买手机划算吗? 成都至大理完整旅游攻略 成都大理旅游攻略必去景点 成都到大理丽江旅游攻略 成都到云南自行旅游攻略及花费5天左右 成都出发,想去云南大理丽江自驾游,线路和花费,谢谢~ 从成都到云南大理、求详细路线及安排。最好经济一些的。谢谢、 一个人从成都到大理 丽江旅游 从成都到丽江大理西双版纳旅游,怎样最划算? 从成都坐飞机到大理旅游,大理有哪些景点可以玩?预计三天时间 急求一份成都到丽江大理双廊的行程攻略?各位大侠请进!