当前位置: 首页 > news >正文

[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

http://www.lryc.cn/news/325418.html

相关文章:

  • 【Linux中vim系列】如何在vim中检索字符串
  • python、execl数据分析(数据描述)
  • 前端理论总结(css3)——页面布局方法
  • 06|Java集合框架初学者指南:List、Set与Map的实战训练
  • Jmeter基础篇(18)压测过程中的注意事项
  • ‘npm‘ 不是内部或外部命令,也不是可运行的程序
  • 使el-table通过操控鼠标滚轮横向滚动
  • 神经网络深度学习梯度下降算法优化
  • 向开发板上移植ip工具:将ip工具移植到开发板系统中
  • 数据关联_3.7
  • 总结虚函数表机制——c++多态底层原理
  • Contos7 安装 Maven
  • 对适配器模式的理解
  • 纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署
  • 双指针的详细教程
  • 【Review+预测】测试架构演进的曲折之路
  • 2015年认证杯SPSSPRO杯数学建模D题(第二阶段)城市公共自行车全过程文档及程序
  • 视频汇聚平台EasyCVR启用图形验证码之后调用login接口的操作方法
  • 【数据结构】非线性结构——二叉树
  • 数据分析POWER BI之power query
  • 【c语言】详解操作符(上)
  • VR全景展示:传统制造业如何保持竞争优势?
  • 2.7、创建列表(List)
  • solr functionquery函数查询自定义函数实现
  • 如何将 Parallels虚拟机 安装或者迁移到 移动硬盘 or U盘?
  • 大型网站集群管理负载均衡
  • JAVA使用POI实现Excel单元格合并-02
  • 深入了解 Linux 中的 MTD 设备:/dev/mtd* 与 /dev/mtdblock*
  • 2、Spring CLI安装
  • 数据库备份工具(实现数据定时覆盖)