[flask]cookie的基本使用/
彻底理解 Cookie - 知乎 (zhihu.com)
是什么
cookie是当你浏览某个网站的时候,由web服务器存储在你的机器硬盘上的一个小的文本文件。它其中记录了你的用户名、密码、浏览的网页、停留的时间等等信息。当你再次来到这个网站时,web服务器会先看看有没有它上次留下来的cookie。如果有的话,会读取cookie中的内容,来判断使用者,并送出相应的网页内容,比如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
笑死,,,这个名字由来不知道是不是真的

在客户端访问某个地址时,会将请求交到服务器进行处理,在发送请求的时候,浏览器会将页面的头部信息 一并发送交到服务器进行处理。在处理的过程中,cookie会在服务器端生成,在服务器端处理完成后,随着http响应,在响应头中加上cookie信息 浏览器接受到响应后,会按照http响应头的cookie在客户端建立cookie ,在下次客户进行请求的时候,http会附带已经存的cookie 一并发送到服务器
比如我们在网站将一个东西加入购物车,接着关掉浏览器,再打开,购物车的东西还在,那就是添加购物的这个信息被存在了一个地方,存在了该浏览器的缓存中
cookie是基于域名安全,不同域名的cooike是不能互相访问的
cookie保存在客户端中
内存Cookie
由浏览器来维护,保存在内存中,浏览器关闭之后就消失了,存在时间短暂
硬盘Cookie
保存在硬盘中,有一个过期时间,除非用户手动清除或者到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的浏览器Cookie的查看
代码
from flask import Flask, make_response, request, redirectapp = Flask(__name__)@app.route("/set_cookie")
def set_cookie():"""cookie的设置"""# cookie保存客户端浏览器中的,所以cookie必须跟着响应对象返回给客户端response = make_response("set_cookie")# 基于响应对象提供的set_cookie方法,可以设置单个cookie# response.set_cookie("变量名", "变量值", max_age="变量有效期")response.set_cookie("user_id", "100") # 如果没有设置max_age,则当前cookie变量会在浏览器关闭(会话结束以后被浏览器删除)response.set_cookie("username", "xiaoming", max_age=3600) # 如果设置max_age,则按秒作为时间单位,设置cookie的有效时间response.set_cookie("number", "10000", max_age=30) # 如果设置max_age,则按秒作为时间单位,设置cookie的有效时间return response@app.route("/get_cookie")
def get_cookie():"""cookie的读取"""print("user_id=", request.cookies.get("user_id") )print("username=", request.cookies.get("username"))print("number=", request.cookies.get("number"))return "get_cookie"@app.route("/del_cookie")
def del_cookie():"""cookie的删除"""# cookie保存客户端浏览器中的,所以服务端无法直接删除cookie# 要实现删除cookie,只能告诉浏览器,cookie过期了,让浏览器自动删除response = make_response("del_cookie")response.set_cookie("user_id", "", max_age=0)response.set_cookie("username", "", max_age=0)return response@app.route("/login", methods=["get", "post"])
def login():"""基于cookie实现登录"""form = """<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form action="" method="post">账号:<input type="text" name="username"><br><br>密码:<input type="password" name="password"><br><br><input type="submit" value="登录"></form></body></html>"""if request.method == "GET":return make_response(form)"""接收客户端POST提交表单数据"""# 暂时不使用数据库,我们模拟用户身份判断代码username = request.form.get("username")password = request.form.get("password")if username == "root" and password == "123456":"""认证通过"""# 基于cookie保存登录状态response = make_response("登录成功!")response.set_cookie("username", username, max_age=7200)response.set_cookie("user_id", username, max_age=7200)return responseelse:"""认证失败"""# 返回GET请求的login登录页面response = redirect("/login")return response@app.route("/user")
def user():"""在部分需要认证身份的页面中,基于cookie判断用户登录状态"""if not request.cookies.get("username"):response = redirect("/login")return responsereturn "个人中心的信息展示"if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)
在执行完set_cookie后可以看到

cookie已经存在于浏览器中,登录后也有cookie

相关文章:
[flask]cookie的基本使用/
彻底理解 Cookie - 知乎 (zhihu.com) 是什么 cookie是当你浏览某个网站的时候,由web服务器存储在你的机器硬盘上的一个小的文本文件。它其中记录了你的用户名、密码、浏览的网页、停留的时间等等信息。当你再次来到这个网站时,web服务器会先看看有没有…...
【Linux中vim系列】如何在vim中检索字符串
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
python、execl数据分析(数据描述)
一 python 1.各函数 1.1python库的安装与导入 #pip install os#pip install matplotlib#pip install seaborn#pip install scikit-learn#pip install scipy#修 改 工 作 目 录import osos.getcwd () # 查看当前工作环境os.chdir( F :\my course\database ) # 修改工作环境o…...
前端理论总结(css3)——页面布局方法
瀑布流 优点:节省空间,外表美观,更有艺术性 对于触屏设备非常友好,通过向上滑动浏览 用户浏览时的观赏和思维不容易被打断,留存更容易 缺点:用户…...
06|Java集合框架初学者指南:List、Set与Map的实战训练
Java集合框架是Java语言的核心部分,它提供了丰富的类和接口,用来高效地管理和操作大量数据。这个强大的工具箱包括多种集合类型,其中最为常用的是List、Set和Map。 1.List - 有序且可重复的数据清单 概念: List就像一个购物清单,你可以按照加入顺序存放和检索项目,而且同…...
Jmeter基础篇(18)压测过程中的注意事项
一、测试计划设计: 1、场景设计:需要基于实际业务需求设计合理的并发用户模型、事务和思考时间,模拟真实用户的操作行为。 2、目标明确:定义明确的性能指标(如响应时间、吞吐量、并发用户数、错误率等)和性…...
‘npm‘ 不是内部或外部命令,也不是可运行的程序
npm认识三年了,今天才知道这是node.js的命令 也就是说,想要在cmd里面运行 npm 命令,但就的安装node.js 1. node.js安装 没有安装包的先下载安装包:下载 | Node.js 中文网 (nodejs.cn) 下载之后双击打开,一路安装确…...
使el-table通过操控鼠标滚轮横向滚动
1.创建directive文件夹,里面创建directive.js文件 import Vue from vue;Vue.directive(scroll-x,{inserted:function(el){let domClass el.getAttribute(class)if(domClass.indexOf(el-table)<0){return false}const scrollDiv el;if(scrollDivnull){return fa…...
神经网络深度学习梯度下降算法优化
【神经网络与深度学习】以最通俗易懂的角度解读[梯度下降法及其优化算法],这一篇就足够(很全很详细)_梯度下降在神经网络中的作用及概念-CSDN博客 https://blog.51cto.com/u_15162069/2761936 梯度下降数学原理...
向开发板上移植ip工具:将ip工具移植到开发板系统中
一. 简介 前面一篇文章对 ip工具源码进行了交叉编译,生成了ip工具。文章如下: 向开发板上移植ip工具:交叉编译 ip工具-CSDN博客 本文对生成的 ip工具进行移植,即移植到开发板系统中,并确定是否可用。 二. 向开发板…...
数据关联_3.7
目标 利用匈牙利算法对目标框和检测框进行关联 在这里我们对检测框和跟踪框进行匹配,整个流程是遍历检测框和跟踪框,并进行匹配,匹配成功的将其保留,未成功的将其删除。 def associate_detections_to_trackers(detections, track…...
总结虚函数表机制——c++多态底层原理
前言: 前几天学了多态。 然后过去几天一直在测试多态的底层与机制。今天将多态的机制以及它的本质分享给受多态性质困扰的友友们。 本节内容只涉及多态的原理, 也就是那张虚表的规则,有点偏向底层。 本节不谈语法!不谈语法&#x…...
Contos7 安装 Maven
Contos7 安装 Maven 前言 Maven是一个用于构建和管理Java项目的强大工具。它提供了一种简单且一致的方式来构建、测试和部署项目,同时管理项目依赖关系。Maven基于项目对象模型(Project Object Model,POM),使用XML…...
对适配器模式的理解
目录 一、适配器模式是什么?二、示例【[来源](https://refactoringguru.cn/design-patterns/adapter)】1 第三方依赖 (接口A 数据A)2 客户端3 方钉转圆钉的适配器(数据B) 三、适配器(xxxAdapter࿰…...
纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署
在日常协同办公过程中,一份文件可能需要多次重复修改才能确定,如果你发送给多个人修改后再汇总,这样既效率低又容易出错,这就用到网页版协同办公软件了,不仅方便文件流转还保证不会出错。 但是目前一些在线协同Office…...
双指针的详细教程
双指针算法是一种常用的算法技巧,它通常用于在数组或字符串中进行快速查找、匹配、排序或移动操作。 双指针并非真的用指针实现,一般用两个变量来表示下标(在后面都用指针来表示) 双指针算法使用两个指针在数据结构上进行迭代&a…...
【Review+预测】测试架构演进的曲折之路
文章目录 前言 一、“原始”阶段 二、“小打小闹”阶段 三、“小米加步枪”阶段 四、“摩托化部队”阶段 五、“骑兵连”阶段 六、“海军陆战队”阶段 七、“社区型组织”阶段 前言 近期公司的测试团队需要重新组织安排,本着谦虚谨慎的态度,我从…...
2015年认证杯SPSSPRO杯数学建模D题(第二阶段)城市公共自行车全过程文档及程序
2015年认证杯SPSSPRO杯数学建模 D题 城市公共自行车 原题再现: 城市交通问题直接影响市民的生活和工作。在地形平坦的城市,公共自行车出行系统是一种很好的辅助手段。一般来说,公共自行车出行系统由数据中心、驻车站点、驻车桩、自行车&…...
视频汇聚平台EasyCVR启用图形验证码之后调用login接口的操作方法
视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备,平台可以将区域内所有部署的监控设备进行统一接入与集中汇聚管理,实现对监控区域的实时高清视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等,在监控中心…...
【数据结构】非线性结构——二叉树
文章目录 前言1.树型结构1.1树的概念1.2树的特性1.3树的一些性质1.4树的一些表示形式1.5树的应用2.二叉树 2.1 概念2.2 两种特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储2.5 二叉树的基本操作 前言 前面我们都是学的线性结构的数据结构,接下来我们就需要来学习非…...
如何快速部署AI交易系统:面向新手的3种完整方案指南
如何快速部署AI交易系统:面向新手的3种完整方案指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 还在为复杂的量化交易系统搭建而…...
STM32内核精讲 | 第七章:异常与中断系统(NVIC)—— 进阶篇
💡 本文是《STM32内核精讲》栏目的第七篇。上一篇我们学习了异常类型、向量表以及 NVIC 的基础寄存器操作(使能/禁止、挂起/清除、优先级配置)。本篇将继续深入 NVIC 的核心机制:优先级分组、晚到与尾链、EXC_RETURN 的奥秘&#…...
AssetStudio深度原理与Unity资源逆向实战指南
1. 这不是“又一个Unity资源提取教程”,而是我三年里反复重装AssetStudio的总结AssetStudio、Unity资源提取、Unity游戏逆向、Unity AssetBundle解析——这几个词,几乎是我过去三年在独立游戏开发、MOD社区支持和老游戏存档修复工作中出现频率最高的关键…...
上位机知识篇---安装包文件名各部分的含义
torch-2.5.0a0872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl这个长长的文件名是一个为特定平台预编译的 PyTorch 安装包(.whl 文件) 的名字。它遵循 Python 的 PEP 427 命名规范,每一部分都精确描述了该软件包的兼容性信息。我…...
CVE漏洞编号规范与FortiSandbox安全机制解析
我不能按照您的要求生成关于“CVE-2026-39808 PoC 公开:FortiSandbox 无需认证 root RCE,全网已遭大规模扫描”的博文内容。原因如下:✅该漏洞编号 CVE-2026-39808 为虚构编号CVE 编号遵循严格的时间与分配规则:当前最新公开的 CV…...
Claude Code用户如何通过Taotoken解决API不稳定与Token不足问题
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code用户如何通过Taotoken解决API不稳定与Token不足问题 对于依赖Claude Code进行编程辅助的开发者来说,稳定的…...
m4s-converter技术解析:跨平台B站缓存视频无损转换方案
m4s-converter技术解析:跨平台B站缓存视频无损转换方案 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个专业的开…...
【流体】对沼气厂管道系统进行流体动力学设计和成本优化(最小化总年化成本TAC)【含Matlab源码 15560期】
💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞…...
Informer2020深度解析:基于ProbSparse注意力机制的长序列时间序列预测实战指南
Informer2020深度解析:基于ProbSparse注意力机制的长序列时间序列预测实战指南 【免费下载链接】Informer2020 The GitHub repository for the paper "Informer" accepted by AAAI 2021. 项目地址: https://gitcode.com/gh_mirrors/in/Informer2020 …...
【紧急通知】ChatGPT桌面版v1.5.2已悄然下架旧安装包!仅剩72小时可获取官方签名安装器(附SHA256校验码)
更多请点击: https://intelliparadigm.com 第一章:ChatGPT桌面版下载安装 OpenAI 官方尚未发布官方支持的 ChatGPT 桌面应用程序,但社区提供了多个稳定、安全且功能完善的第三方桌面客户端。目前主流推荐方案为基于 Electron 构建的开源项目…...
