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

一周学会Flask3 Python Web开发-客户端状态信息Cookie以及加密

锋哥原创的Flask3  Python Web开发 Flask3视频教程:

2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

HTTP是无状态(stateless)协议。也就是说,在一次请求响应结束后,服务器不会留下任何关于对方状态的信息。但是对于某些Web程序来说,客户端的某些信息又必须被记住,比如用户的登录状态,这样才可以根据用户的状态来返回不同的响应。为了解决这类问题,就有了Cookie技术。Cookie技术通过在请求和响应报文中添加Cookie数据来保存客户端的状态信息。Cookie其实就是保存在客户端浏览器上的小型文本数据。

我们通过响应对象response的set_cookie()方法来实现添加cookie。set_cookie()方法的参数

属性说明
keycookie的键(名称)
valuecookie的值
max_agecookie被保存的时间数,单位为秒;默认在用户会话结束(即关闭浏览器)时过期
expires具体的过期时间,一个datetime对象或UNIX时间戳
path限制cookie只在给定的路径可用,默认为整个域名
domain设置cookie可用的域名
secure如果设为True,只有通过HTTPS 才可以使用
httponly如果设为True,禁止客户端JavaScript获取cookie

示例:

@app.route('/cookie')
def set_cookie():
    response = make_response()
    response.set_cookie('username', 'jack')
    return response

那如何获取浏览器客户端里的cookie呢?

我们可以通过请求对象request的cookies属性对象的get()方法获取

@app.route('/getcookie')
def get_cookie():
    return request.cookies.get('username')

但是我们发现会发现个问题,用明文存储在客户端浏览器数据,很容易被窃取泄露数据。不安全。

所以我们有必要对数据进行加密。flask提供了会员对象session来实现cookie加密。

首先我们设置秘钥,随机串即可,越复杂越安全。

# 设置秘钥
app.secret_key = 'ljfda32@2334_ss'

然后直接用session对象存cookie

@app.route('/cookie')
def set_cookie():
    # response = make_response()
    # response.set_cookie('username', 'jack')
    session['password'] = 123456
    return 'ok'

获取cookie代码实例:

@app.route('/getcookie2')
def get_cookie2():
    print('username:', session['password'])
    return 'ok'

http://www.dtcms.com/a/29899.html

相关文章:

  • 鸿蒙-canvas-画时钟
  • vue从入门到精通(十一):条件渲染
  • VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合
  • springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
  • 回溯算法——77,216
  • 合理建模--最短路径
  • open webui 部署 以及解决,首屏加载缓慢,nginx反向代理访问404,WebSocket后端服务器链接失败等问题
  • 《机器学习实战》专栏 No12:项目实战—端到端的机器学习项目Kaggle糖尿病预测
  • 第十五届蓝桥杯:爬山
  • 物联网+人工智能的无限可能
  • 多线程和并发篇
  • 我使用windows笔记本通过远程桌面连接连接linux服务器,但是远程桌面连接显示“未启动对服务器的远程访问”,我应该怎么做才能使用笔记本连接服务器呢?
  • Python爬虫系列教程之第十四篇:爬虫项目部署、调度与监控系统
  • MCU Bootloader具备什么条件才能跳转到APP程序
  • C++ ——异常
  • 【目标检测】【BiFPN】EfficientDet:Scalable and Efficient Object Detection
  • spring 狂神说的详细笔记(完整版)
  • 30. 串联所有单词的子串
  • My first Android application
  • 知识蒸馏知识点
  • C#初级教程(1)——C# 与.NET 框架:探索微软平台编程的强大组合
  • 人工智能之数学基础:深入解析与应用线性空间中的基
  • 嵌入式之PWM
  • 【文件夹合并——树链剖分,树状数组】
  • Java爬虫获取亚马逊商品信息:按关键字搜索的实战指南
  • HarmonyOS NEXT技术全景与未来趋势指南(API12+)
  • 3D打印注塑件-省模具费90%的解决方案
  • 【mysql共享锁与排他锁】
  • HTTP入门
  • BGP配置华为——路径优选验证