下面讲的都是基Express及相关的包。所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包。

先简单说一下,如何用Express搭建一个服务器环境。如下:

const express=require("express");//引用express

var server=express();//创建服务器
server.listen(8090);//监听服务器

就是这么简单三句即可。

在说cookie, session 之前,先了解一下这2个东西的基本特性:

cookie:

  1.保存在浏览器端,每次请求都会带过来;

  2.不安全、大小有限(4K)。

session:

  1.保存在服务器端;

  2.安全、理论上是无限的;

  3.基于cookie实现的。

对于这2个东西的操作,无非就是发送,读取,写入,删除这几种操作。

先讲一下cookie:

1.发送:

const express=require("express");

var server=express();
server.listen(8090); //发送cookie
server.use('/www/test.html',function(req,res){
res.cookie('user','test',{path:'/www',maxAge:30*24*3600*1000}); res.send('ok');
})

运行这个js,可以看到浏览器里面的cookie如下图:

2.读取cookie,如果需要用到签名功能,需要引用cookie-parser模块:

const express = require("express");
const cookieParser = require("cookie-parser"); var server = express();
server.use(cookieParser("adtq563fgkj452ag")); //先写入,再读取,secret表示cookie签名,可以防止别人篡改你的cookie
server.use('/', function (req, res) {
req.secret = 'adtq563fgkj452ag'; //如果上面在cookieParser传入了签名,这句话可以不写
res.cookie('user', 'sese', {
signed: true //表示该cookie需要签名
});
console.log('签名的cookie:', req.signedCookies); //读取签名的cookie
console.log('无签名的cookie:', req.cookies); //读取没签名的cookie res.send('ok');
}); server.listen(8090);

执行该JS,结果如下图:

服务器端返回的结果:

3.删除cookie,语句为clearCookie():

const express = require("express");
const cookieParser = require("cookie-parser"); var server = express(); //删除cookie
server.use('/', function (req, res) {
res.clearCookie('user');
res.send('ok');
}); server.listen(8090);

-------------------------我是存在感十足的分割线-------------------------

现在讲一下sessoion。

1.写入session,需要引用cookie-session模块 :

const express = require("express");
const cookieParser = require("cookie-parser");
const cookieSession = require("cookie-session"); var server = express(); //生成session的密钥数组
var arr=[];
for(var i=0;i<10000;i++){
arr.push('sig_'+Math.random());
}
server.use(cookieParser());
server.use(cookieSession({
name:'sess',
keys:arr // 密钥
})); server.use('/', function (req, res) {
res.send('ok');
}); server.listen(8090);

执行上面代码,显示结果如下 :

2.删除session,语句为delete req.session[name],即为:

server.use('/', function (req, res) {
delete req.session['sess'];
res.send('ok');
});

大家可以亲自测试上面的例子~

node学习笔记9——cookie,session相关操作的更多相关文章

  1. Python Web学习笔记之Cookie,Session,Token区别

    一.Cookie,Session,Token简介 # 这三者都解决了HTTP协议无状态的问题 session ID or session token is a piece of data that i ...

  2. CentOS学习笔记--基本命令--目录的相关操作

    Linux基本命令--目录的相关操作 常见的处理目录的命令吧: cd:变换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空的目录 cd (变换目录) cd是Chang ...

  3. Javaweb学习笔记5—Cookie&Session

    今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...

  4. ElasticSearch学习笔记-02集群相关操作_cat参数

    _cat参数允许你查看集群的一些相关信息,如集群是否健康,有哪些节点,以及索引的情况等的. 检测集群是否健康 curl localhost:9200/_cat/health?v 说明: curl 是一 ...

  5. Django学习笔记之Django ORM相关操作

    一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...

  6. X-Cart 学习笔记(四)常见操作

    目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...

  7. openresty 学习笔记六:使用session库

    openresty 学习笔记六:使用session库 lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Pr ...

  8. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  9. amazeui学习笔记--css(布局相关1)--网格Grid

    amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式  <div class=&q ...

随机推荐

  1. UITableView 滚动到最后一行

    if (self.tableView.contentSize.height > self.tableView.frame.size.height) { CGPoint offset = CGPo ...

  2. DCOS中监控和弹性伸缩方案经验

    监控的选型 我们的DCOS 主要是面向2种业务形态:互联网应用,NFV组件和相关的数据库.2种不同的业务虽然说都是跑在容器内部,但是其实需要监控的信息和指标都是各不相同.因此在选择监控方案的时候我们更 ...

  3. WPF 控件事件的一个小坑…

    最近想判断一下 Slider 是由鼠标点击而改变值,还是由程序内部代码改变的值,发现鼠标的各种事件比如 MouseDown.MouseUp.MouseLeftButtonDown 什么的,都没有任何反 ...

  4. 学习排序算法(一):单文档方法 Pointwise

    学习排序算法(一):单文档方法 Pointwise 1. 基本思想 这样的方法主要是将搜索结果的文档变为特征向量,然后将排序问题转化成了机器学习中的常规的分类问题,并且是个多类分类问题. 2. 方法流 ...

  5. iOS缓存-内存缓存

    为了减少与服务器的连接沟通次数,提高应用程序的执行速度,使用了iOS的缓存机制 #import "YoungViewController.h" @interface YoungVi ...

  6. [svc]linux性能监控

    参考 w - Show who is logged on and what they are doing. [root@n1 ~]# w # w - Show who is logged on and ...

  7. K8s 介绍

    Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展. 使用Kubernetes可以: 1. 自动化容器的部署和复制 2. 随时扩展或收缩容器规模 3. 将 ...

  8. (原创)如何使用boost.asio写一个简单的通信程序(一)

    boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

  9. kali下添加PATH环境变量

    添加PATH环境变量,第1种方法: [root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@l ...

  10. 解决sql server不允许保存表结构修改的问题

    说明(2017-5-25 15:38:09):