Flask项目入门—会话技术Cookie和Session

Session和Cookie都是用于跟踪用户会话的技术、它们可以存储用户信息,以便在用户与网站进行交互时提供个性化的体验。然而,这两者在存储位置、使用方式、安全性等方面存在显著的差异。

工作原理/流程

1、用户第一次访问时候服务器生成 Cookie:服务器在响应头中向客户端发送一个或多个 Cookie。

2、客户端存储 Cookie:客户端浏览器将这些 Cookie 存储到本地(存储方式依赖于浏览器实现)。

3、后续请求携带 Cookie:浏览器在后续请求中自动携带这些 Cookie,服务器可以读取 Cookie 中的信息,进行相应的处理。

4、Cookie 属性设置:Cookie 可以设置 HttpOnly、Secure 等属性来增强安全性。

Session

1、用户首次访问服务器:客户端发送请求,服务器在响应中创建一个唯一的 Session ID。

2、Session ID 存储:这个 Session ID 通常以 Cookie 的形式存储在客户端。

3、后续请求:客户端每次发送请求时,都会带上 Session ID,服务器根据这个 Session ID 查找对应的 Session 数据。

4、服务器端存储:Session 数据(如用户信息、购物车)存储在服务器的内存、数据库或其他持久化存储中。

Cookie和Session的区别

|------|----------------------------------------------------------------------------------------------------|-----------------------|
| 区别 | Cookie | Session |
| 存储位置 | 浏览器 | 服务端 |
| 存储类型 | string类型 | Object类型 |
| 生命周期 | Cookie可以设置过期时间。如果设置了过期时间,那么即使关闭了浏览器,Cookie仍然会保存在本地硬盘中,直到过期时间到达才会被删除;如果没有设置过期时间,那么关闭浏览器时Cookie就会被删除 | 默认是会话期间有效,可自定义时间 |
| 性能 | 占用网络带宽,影响加载速度 | 依赖服务器性能,存储过多可能导致服务器压力 |

Cookie和Session的操作

Cookie的操作在通过flask引入的response或者request操作,session通过flask引入的session来操作

复制代码
from flask import Blueprint, render_template, request, redirect, session

1、设置

Cookie

复制代码
response.set_cookie('user', username)  # 默认浏览器关闭则cookie失效
#过期时间:
    # max_age: 秒
    # expires: 指定的datetime日期
response.set_cookie('user', username, max_age=3600*24*7)   
response.set_cookie('user', username, expires = datetime.datetime(2023, 12, 12))     

session

复制代码
 # 设置session
 session['user'] = username
 session.permanent = True

2、获取

Cookie

复制代码
request.cookies.get('user')

session

复制代码
session.get('user')

3、删除

Cookie

复制代码
response.delete_cookie('user')

session

复制代码
session.pop('user')
session.clear()  # 慎用,会删除服务器下的所有session
相关推荐
笔触狂放34 分钟前
第3章 抓取静态网页数据
爬虫·python
海兰34 分钟前
【 Python 量化交易】开篇
开发语言·python·信息可视化·量化交易
pt10431 小时前
网络自动化Python课程:Netconf与Restconf及Cisco自动化配置实验
网络·python·自动化
slacker-kian1 小时前
[笔记]-什么是相似性搜索?
python·ai·向量·相似性搜索·点积·l2 距离·余弦相似度和距离
阿童木写作1 小时前
跨境电商图片翻译工具,批量翻译视频字幕还免费
python·音视频
sukioe1 小时前
城智连响:基于 LangGraph 与四库分层架构的城市公共设施智能报修与派单系统
人工智能·python·ai·架构·langchain
卷无止境2 小时前
Coding Agent 里的上下文 Compact,到底在压缩什么
后端·python
Patrick在香港2 小时前
Claude Prompt Caching 实测账单:第一轮贵 25%,从第二轮开始省 86%
python·prompt·claude·成本优化·prompt缓存·anthropic api
新时代牛马2 小时前
字符设备注册:从cdev_add 到chrdev_open 的 VFS路径
python
life1692 小时前
python requests采集同花顺F10、龙虎榜数据
python·同花顺·龙虎榜