• cookie和session区别


    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

    注:可以直接使用脚手架

    express --view=模板引擎名称 项目名称

    2.使用

    在脚手架app.js中已经带有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.js中已经带有cookie:

    var cookieParser = require(‘cookie-parser’);

    app.use(cookieParser(“xiaoxuesheng”));//签名 (加密) 要指定秘钥 ,什么名字都星行,列如:“xiaoxuesheng”

    在users.js中

    //使用cookie
    //加密存储
    res.cookie(“mycode”,“abc”,{
    signed:true //加密
    })

    //取出cookie
    let mycode = req.signedCookies.mycode

    5.cookie的特点:

    • 保存到客户端,容易被篡改(删除、禁用)

    • 保存的数据量有限的

    • 简单易懂好用

    6.cookie的缺点:

    1. 保存在客户端,容易被篡改。
    2. 大小受限,本身最大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,//每次是否都刷新存储器
    saveUninitialized:true,
    secret:“xiaoxuesheng” //秘钥
    }))

    3.代码示例

    (1)使用session存储数据:

    // 存储
    router.get("/test", (req, res) => {
        req.session.yourcode = 'abc';
        res.send('ok')
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在浏览器中显示:

    会显出id和后面的字符串,后端打印的“abc”没出现

    (2)取出session数据:

    router.get("/test2", (req, res) => {
        console.log(req.session);
        res.send("ookkkk")
    
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在后端显示:

    4.可以实现在不同的端实现的结果不一样

    如在火狐浏览器:

    5.cookie和session的共同点

    cookie和session都是用来跟踪浏览器用户身份的会话方式。

    6.cookie和session区别

    • cookie是保存在客户端的

    • cookie有大小限制

    • session是保存在服务器端

    • session更加安全

    • session会比较占用服务器性能,当访问增多时应用cookie

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    产品公告 | MemFire Cloud V1内测版即将停止服务
    渗透测试——安全漏洞扫描工具APPScan的安装与基本使用步骤
    【Github】git本地仓库建立与远程连接
    shell如何定义变量
    vue3 ts vite elementplus更改主题颜色
    《数据库应用系统实践》------ 小区停车管理系统
    【Java项目-飞翔的小鸟】附源码
    【知识图谱】基于neo4j开发的信息化文档分析系统(源码)
    个推微服务网关架构实践详解
    linux下doc转docx
  • 原文地址:https://blog.csdn.net/m0_67401153/article/details/126098997