> 文档中心 > 深入了解session和cookie的区别(面试常考)

深入了解session和cookie的区别(面试常考)

目录

  • 🍓 一,什么是session和cookie
    • 1,什么是session
    • 2,cookie的组成
  • 🍌二,session和cookie工作流程
    • 1,session的工作原理
    • 2,cookie的工作流程
  • 🍉 三,session和cookie的区别

🍓 一,什么是session和cookie

1,什么是session

session 在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

2,cookie的组成

cookie 有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
cookie的组成:
由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成
(1)Name/Value:设置Cookie的名称及相对应的值
(2)Expires属性:设置Cookie的生存期。有两种存储类型的Cookie:会话性与持久性
(3)Path属性:定义了Web站点上可以访问该Cookie的目录
(4)Domain属性:指定了可以访问该 Cookie 的 Web 站点或域
(5)Secure属性:指定是否使用HTTPS安全发送Cookie。使用HTTPS安全协议,可以保护Cookie在浏览器和Web服务器间的传输过程中不被窃取和篡改。

🍌二,session和cookie工作流程

1,session的工作原理

(1)当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。在这里插入图片描述

2,cookie的工作流程

工作流程:
1,导包
2,创建服务器
3,写接口
4,开启服务器
在这里插入图片描述

// 1. 导包const express = require("express");// 2. 创建服务器const app = express();// 3. 写接口// 3.1 登录接口app.get("/login", (req, res) => {  // 假如现在这里已经验证了账号和密码,是正确的,是可以登录的  // 那服务器就应该把cookie响应回去  res.writeHead(200, {    "Content-Type": "text/plain; charset=utf-8",    "Set-Cookie": "userid=123456", // 实际开发的时候,肯定发过去的是密文  });  res.end();});// 3.2 查询接口app.get("/list", (req, res) => {  // 接收以下客户端(浏览器端)自动带过来的cookie  console.log(req.headers);  res.send("666");});// 4. 开启服务器app.listen(8086, () => {  console.log("服务器开启成功了...8086");});

🍉 三,session和cookie的区别

cookie和session不同点:

  • ①规范不同:cookie是有HTTP规范约束的,cookie是HTTP头的一个字段,session是非标准概念,没有相应的规范约束
  • ②存储大小不同:单个cookie保存的数据不能超过4K,每个站点cookie个数有限制,session没有容量限制
  • ③保存位置不同:cookie保存在客户端的内存或文件,session保存在服务器中,可以是文件,数据库,内存等
  • ④具体业务不同:cookie用于认识用户行为,只能通过Http头设置传输,session用于识别用户本身,比如这个用户是不是已经登录了相应的服务、用户的这个行为应该拒绝还是执行,可以通过URL、Cookie、HTTP POST DATA等各种机制来实现
  • ⑤传输量不同:cookie传输所有的cookie,而session只传输session ID就可以
  • ⑥安全性不同:cookie存放在用户本地,可以被修改访问,安全性不高,而session存放在服务器,比较安全