当前位置:网站首页>Difference between cookie and session
Difference between cookie and session
2022-07-30 06:05:00 【burial】
cookie
1.什么是cookie
Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制.目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie.
2.为什么要用cookie
由于http协议是一种无状态的协议(客户端和服务端互相不认识)
Cookies是一些存储在用户电脑上的小文件.它是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容.页面代码能够获取到Cookie值然后发送给服务器,比如Cookie中存储了所在地理位置,以后每次进入地图就可以默认定位到改地点.
3.cookie的原理
cookie的执行原理:就是当客户端访问服务器的时候(服务器运用了cookie),服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来,以后客户端每次访问服务器,都会自动的携带着这份cookie.
简单来说,就是当客户端访问服务器时,服务器会生成一个票据给客户端,当客户端收到票据的之后就保存起来,以后再访问服务器就会自动带着票据.
- 简易cookie原理示意图****如下图所示:

4.安装使用cookie
1.安装
npm i cookie-parser
注:Scaffolding can be used directly
express --view=模板引擎名称 项目名称
2.使用
在脚手架app.jsalready included in the cookie:
var cookieParser = require(‘cookie-parser’);
app.use(cookieParser());//使用cookie-parser
生成cookie:
//设置cookie
//在响应的时候,生成一份cookie(票据)
// res.cookie(‘xxcode’,“abc”);
在浏览器中显示:

取出cookie:
console.log(req.cookies);
在后端显示:

5.加密cookie
在脚手架app.jsalready included in the cookie:
var cookieParser = require(‘cookie-parser’);
app.use(cookieParser(“xiaoxuesheng”));//签名 (加密) To specify the key ,Any name is a star,列如:“xiaoxuesheng”
在users.js中
//使用cookie
//加密存储
res.cookie(“mycode”,“abc”,{
signed:true //加密
})//取出cookie
let mycode = req.signedCookies.mycode
5.cookie的特点:
保存到客户端,容易被篡改(删除、禁用)
保存的数据量有限的
简单易懂好用
6.cookie的缺点:
- 保存在客户端,容易被篡改.
- 大小受限,本身最大4kb.
session
1.什么是session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上.客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上.这就是Session.客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了session是一种特殊的cookie.cookie是保存在客户端的,而session是保存在服务端.
2.为什么要用session
由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全.那如何又要安全,又可以方便的全局读取信息呢?于是,这个时候,一种新的存储会话机制:session 诞生了
3.session原理
当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id).
- 简易cookie原理示意图****如下图所示:

4.安装使用session
1.安装
npm i express-session
2.使用
//引入session中间件
let expressSession=require(“express-session”)//使用session中间件
app.use(expressSession({
resave:true,//Whether to refresh the memory every time
saveUninitialized:true,
secret:“xiaoxuesheng” //秘钥
}))
3.代码示例
(1)使用session存储数据:
// 存储
router.get("/test", (req, res) => {
req.session.yourcode = 'abc';
res.send('ok')
})
在浏览器中显示:

will showid和后面的字符串,后端打印的“abc”没出现
(2)取出session数据:
router.get("/test2", (req, res) => {
console.log(req.session);
res.send("ookkkk")
})
在后端显示:

4.The results that can be achieved on different ends are different
Such as in Firefox browser:

5.cookie和session的共同点
cookie和session都是用来跟踪浏览器用户身份的会话方式.
6.cookie和session区别
cookie是保存在客户端的
cookie有大小限制
session是保存在服务器端
session更加安全
session会比较占用服务器性能,当访问增多时应用cookie
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在.深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小.自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前.因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担.添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢

文档在线化管理系统Confluce使用

The Golden Circle Rule: Deep Thinking Methods for Successful People

This article will take you through js to deal with the addition, deletion, modification and inspection of tree structure data

从字节码角度带你彻底理解异常中catch,return和finally,再也不用死记硬背了

Solve phpstudy unable to start MySQL service

分布式事务之 LCN框架的原理和使用(二)

MySql模糊查询大全

报错:npm ERR code EPERM

JVM 类加载机制 超详细学习笔记(三)

如何使用FirewallD限制网络访问
随机推荐
[Mysql] CONVERT function
idea 编译protobuf 文件的设置使用
排列数字(DAY90)dfs
[GStreamer] 插件的名字要和GST_PLUGIN_DEFINE匹配
【Koltin Flow(二)】Flow操作符之末端操作符
ClickHouse 数据插入、更新与删除操作 SQL
It's time to have to learn English, give yourself multiple paths
Docker-compose安装mysql
Error: npm ERR code EPERM
MySQL - 函数及约束命令
程序员赚钱实操,手把手教你做付费课程,自媒体,付费文章及付费技术课赚钱
Solve the problem that the local nacos is not configured but the localhost8848 connection exception always occurs
MySQL的存储过程
MySql模糊查询大全
curl (7) Failed connect to localhost8080; Connection refused
cnpm安装步骤
丑陋的程序员
如何使用FirewallD限制网络访问
MySQL模糊查询性能优化
mysql basics (4)