【面试官】深入了解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存放在服务器,比较安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜羊羊zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值