node.js之Cookie
最近还是用node.js比较多,今天正好遇见一个问题,还是关于Cookie。
node.js中如何实现cookie(以express框架为例):
"use strict";
var express = require("express");
var cookieParser = require("cookie-parser");
var util = require("util");
var app = express();
app.use(cookieParser());
app.get("/test",function (req, res) {
console.log("Cookies: " + util.inspect(req.cookies));
res.send("cookie");
});
app.listen();
控制台输出结果为:
Cookies: { Hm_lvt_2edaee7dab677cdec491683758d1e378: '1552046206,1552134942,1552485731',
Hm_lpvt_2edaee7dab677cdec491683758d1e378: '',
add: [ null, null, null, null, null, null, null ] }
如果不使用express的话,那么原生node.js是如何实现的呢?代码如下:
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[ ].trim() ] = ( parts[ ] || '' ).trim();
});
console.log(Cookies)
// 向客户端设置一个Cookie
res.writeHead(, {
'Set-Cookie': 'myCookie=test',
'Content-Type': 'text/plain'
});
res.end('Hello World\n');
}).listen();
cookie并不是万能的,相反它有一定的安全隐患,为此node.js有一种cookie签名实现,源码如下:
const express = require('express');
const cookieParser = require('cookie-parser');
//随机生成的字符串
var signStr = 'xadsafeowirw'
var app = express();
//需要将密匙传给cookieParser, 在接收数据的时候,进行解析。
app.use(cookieParser(signStr));
app.use('/', function (req, res) {
//将密匙字符串赋值给req.secret,可以省略,在上面cookieparser()时会自动对secret赋值
req.secret=signStr;
//返回给浏览器的cookie, 这就是传说中的种cookie了
//如果需要开启签名,第三个参数对象signed 设置为true.
//由于cookie的大小限制4k,而签名后的cookie体积会增加,所以重要的cookie才签名
res.cookie('cookiename', 'youcong', {signed: true, maxAge: })
//有没有签名的cookie,获取方式不一样。
console.log('无签名', req.cookies);
console.log('带签名',req.signedCookies);
res.send('ok')
})
app.listen();
顺便再补充一下node.js的session实现,代码如下:
const express = require('express');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
var app = express();
app.use(cookieParser());
//cookieSession 必须放在cookieParser后面
app.use(cookieSession({
//session的秘钥,防止session劫持。 这个秘钥会被循环使用,秘钥越长,数量越多,破解难度越高。
keys: ['aaa', 'bbb', 'ccc'],
//session过期时间,不易太长。php默认20分钟
maxAge: *,
//可以改变浏览器cookie的名字
name: 'session'
}));
app.use('/', function (req, res) {
//假设使用count记录用户访问的次数
if(req.session['count'] == null) {
req.session['count'] = ;
}else{
req.session['count']++;
}
console.log(req.session['count'])
res.send('ok')
})
app.listen()
参考资料如下:
node.js操作Cookie,让你清楚了解cookie存入过程:https://blog.csdn.net/sinat_18474835/article/details/79987282
Node.js学习(15)-Cookie:https://blog.csdn.net/sunhuansheng/article/details/82356129
node学习之cookie和session:https://www.cnblogs.com/lijinwen/p/7898159.html
node.js之Cookie的更多相关文章
- node.js获取cookie
node.js 获取cookie var Cookies ={}; if (req.headers.cookie != null) { req.headers.cookie.split(';').fo ...
- node.js操作Cookie
node.js操作Cookie http://www.tuicool.com/articles/F3UF7n
- Cookie和Session在Node.JS中的实践(一)
Cookie和Session在Node.JS中的实践(一) Cookie和Session是一个非常有趣的概念,也是一个老生常谈的话题.然而,作者看了许多文章,也翻看了几本书籍,它们对Cookie和Se ...
- 在node.js中使用COOKIE
node.js中如何向客户端发送COOKIE呢?有如下两个方案: 一.使用response.writeHead,代码示例: //设置过期时间为一分钟 var today = new Date(); v ...
- node.js平台下Express的session与cookie模块包的配置
首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等. npm install express-session --save-dev cookie模块包:用于解析cookie. ...
- node.js平台下,利用cookie实现记住密码登陆(Express+Ejs+Mysql)
本博文需有node.js+express+mysql入门基础,若基础薄弱,可参考博主的其他几篇node.就是博文: 1.下载Mysql数据库,安装并配置 创建用户表供登录使用: 2.node.js平台 ...
- Node.js Cookie管理
Cookie 管理 我们可以使用中间件向 Node.js 服务器发送 cookie 信息,以下代码输出了客户端发送的 cookie 信息: var express=require('express') ...
- Node.js开发入门—使用cookie保持登录
这次来做一个站点登录的小样例,后面会用到. 这个演示样例会用到Cookie.HTML表单.POST数据体(body)解析. 第一个版本号,我们的用户数据就写死在js文件中. 第二个版本号会引入Mong ...
- Cookie和Session在Node.JS中的实践(三)
Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不 ...
随机推荐
- js 判断数组中的值是否都相等
function isAllEqual(array) { if (array.length > 0) { return !array.some(function(value, index) { ...
- [总结]vue开发常见知识点及问题资料整理(持续更新)
package.json中的dependencies与devDependencies之间的区别 –save-dev 和 –save 的区别 我们在使用npm install 安装模块或插件的时候,有两 ...
- 洛谷P3245 [HNOI2016]大数(莫队)
题意 题目链接 Sol 莫队板子题.. 维护出每个位置开始的字符串\(mod P\)的结果,记为\(S_i\) 两个位置\(l, r\)满足条件当且仅当\(S_l - S_r = 0\),也就是\(S ...
- 聊聊找AI算法岗工作
https://blog.csdn.net/weixin_42137700/article/details/81628028 首先,本文不是为了增加大家的焦虑感,而是站在一名学生的角度聊聊找AI算法岗 ...
- Mysql 常用数据类型
double:浮点型,double(5,2) 表示最多5位,必须包含两位小数,最大值是 999.99 char:定长字符串类型,char(10) 表示必须放 10 的字节,没有就用空格补充 varch ...
- 【Wyn Enterprise BI知识库】 认识多维数据建模与分析 ZT
与业务系统类似,商业智能的基础是数据.但是,因为关注的重点不同,业务系统的数据使用方式和商业智能系统有较大差别.本文主要介绍的就是如何理解商业智能所需的多维数据模型和多维数据分析. 数据立方体 多维数 ...
- iOS ----------怎么修改xcode默认打开方式
很简单就能解决:选中文件,右键,显示简介,打开方式,选择8.2.然后打钩.
- 改变RadioButton的文字位置以及距离
在默认情况下,RadioButton的 文字位置和文字的距离是不变的,为了可以改变它,我们可以用以下的方法. 1.改变文字的位置 android:button="@null" // ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
- linux文件统计命令和目录统计命令
1.统计本目录下除`./apps/myapp/migrations`的所有py文件 wc -l `find -path . -o -name '*py' ! -path "./apps/my ...