flask中的cookies介绍

news2024/11/17 11:39:26

在这里插入图片描述

flask中的cookies介绍

“Cookie” 在 web 开发中是一种非常重要的技术,用于在客户端(即用户的浏览器)存储信息,以便在多个页面和多个访问会话之间保持状态。Cookies 通常用于记住用户的登录信息,跟踪用户在站点上的浏览行为,以及其他需要记住的设置或选择。

在 Flask 中,可以通过 request.cookies 获取客户端发送的 cookies。response.set_cookie 可以设置一个新的 cookie。下面是一个简单的示例:

from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/')
def index():
    username = request.cookies.get('username')
    # use cookies.get(key) instead of cookies[key] to not get a
    # KeyError if the cookie is missing.

    return 'Hello, ' + username

@app.route('/setcookie')
def setcookie():
    resp = make_response('Set Cookie')
    resp.set_cookie('username', 'the username')
    return resp

在上述代码中,当用户访问根路径(‘/’)时,服务器会尝试读取名为 ‘username’ 的 cookie。如果找到了这个 cookie,它就会显示出来。当用户访问 ‘/setcookie’ 路径时,服务器会设置一个新的 cookie,名为 ‘username’,值为 ‘the username’。

Flask 中的 sessions 实际上是基于 cookies 实现的。当你在 Flask 应用中创建一个 session 时,Flask 会将 session 数据序列化并加密,然后存储在一个 cookie 中。这意味着,虽然 session 数据在服务器端看起来是被存储起来的,但实际上它被存储在用户的浏览器中。这种实现方法有一个好处,就是服务器不需要维护一个 session 存储区,但也有一个潜在的缺点,那就是如果 session 数据过大,可能会超过 cookie 的大小限制。

在某些情况下,如果需要在服务器端存储大量的 session 数据,或者出于安全考虑不想将 session 数据存储在客户端,可以使用其他的 session 存储方案,例如服务器内存、数据库或专门的 session 存储服务等。这就需要使用 Flask 的扩展,如 Flask-Session。

补充

Cookie 的大小限制主要由两个因素决定:单个 cookie 的大小限制和每个域名的总 cookie 大小限制。

根据 RFC 6265 HTTP 协议的规定:

  • 单个 cookie 的大小:最多为 4096 字节,包括 cookie 的名字、值和所有属性。这个限制确保了即使是最小的网络包(如 TCP 包)也能容纳一个完整的 cookie。
  • 每个域的 cookie 总大小:大多数浏览器允许每个域名存储至少 50 个 cookie,总大小至少为 4096 * 50 = 204800 字节(200KB)。

请注意,这些都是最小限制,一些浏览器可能会允许更大的 cookie 或更多的 cookie。然而,为了最好的兼容性,建议遵循这些限制。

另外,因为每次 HTTP 请求都会附带所有的 cookie,所以如果 cookie 太大,可能会影响网站的性能。因此,最好只在 cookie 中存储小型的、必要的数据,例如 session ID 或其他标识符,然后在服务器端关联更多的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/800296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试测试框架封装改造

PO模式自动化测试用例 PO设计模式是自动化测试中最佳的设计模式,主要体现在对界面交互细节的封装,在实际测试中只关注业务流程就可以了。 相较于传统的设计,在新增测试用例后PO模式有如下优点: 1、易读性强 2、可扩展性好 3、…

【数据库原理】三级项目——数据库基本操作

一、项目名称 数据库基本操作 二、项目内容 了解一种DBMS的功能和界面。使用图形化界面创建数据库。使用图形化界面创建课本70页习题6中的关系表。使用图形化界面向所建的关系表中插入数据。完成70页习题6第3-5小题的各项查询。查询每个城市供应的零件总数。查询使用零件数量…

安卓:视图绑定——ButterKnife

目录 一、ButterKnife介绍 二、ButterKnife优点: 三、ButterKnife的使用 build.gradle添加 ButterKnife 依赖: 1、视图绑定: 2、点击事件绑定: 3、资源绑定: 4.绑定多个视图元素: 5.绑定视图容器&…

内核链表在用户程序中的移植和使用

基础知识 struct list_head {struct list_head *next, *prev; }; 初始化: #define LIST_HEAD_INIT(name) { (name)->next (name); (name)->prev (name);} 相比于下面这样初始化,前面初始化的好处是,处理链表的时候,不…

Python中运行取消Python console模式

在Python里run的时候突然会发现,进入的不是run模式,而是console模式,这种运行模式能保留你每次的运行历史,因为会重开一个运行小页面,关闭操作如下:

GAMES104里渲染等一些剩下的问题

渲染的一些剩下的问题 1. 如何理解渲染中的AO(环境光遮蔽) 环境光遮蔽 我们先从一个简单的效果开始—环境光遮蔽(Ambient Occlusion,以下简称AO)。大家可以看到,下图中的场景没有任何渲染效果,也没有任何着色效果,但场景呈现出了非常清晰的…

大数据学习教程:Linux 基础教程(上)

1 操作系统概述 1.1 计算机原理 现代计算机大部分都是基于冯.诺依曼结构,该结构的核心思想是将程序和数据都存放在计算机中,按存储器的存储程序首地址执行程序的第一条指令,然后进行数据的处理计算。 计算机应包括运算器、控制器、储存器、…

PLC学习的步骤与重点:

熟悉基础元器件的原理和使用方法:了解按钮、断路器、继电器、接触器、24V开关电源等基础元器件的原理和使用方法,并能够应用它们来实现简单的逻辑电路,例如电机的正反转和单按钮的启停控制。 掌握PLC的接线方法:了解PLC的输入输出…

【C++进阶:map和set】

本节涉及到的所有代码见以下链接,欢迎参考指正! ​​​​​​​ practice: 课程代码练习 - Gitee.comhttps://gitee.com/ace-zhe/practice/tree/master/map%E5%92%8Cset ​​​​​​​ 关联式容器 在C初阶阶段,已经学习并总了STL中的部分…

麒麟信安携手先进数通发布“多云协同,加速推进服务器虚拟化国产平滑迁移”信创联合解决方案

金融行业是现代经济的核心,金融行业信息技术应用创新是关系“国家安全”和“科技强国”战略的重要工程。为满足银行等金融机构数字化转型和信创发展的双重需求,麒麟信安与北京先进数通信息技术股份公司携手推出“多云协同,加速推进服务器虚拟…

Elisp之message为内容增加颜色(二十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

驱动 CAN总线

Controller Area Network(控制器局部网络)是一种有效支持分布式控制或实时控制的串行异步半双工的现场总线,支持多主机多从机,需要 CAN控制器 和 CAN收发器 的硬件支持 标准内容ISO 11898-1:2015定义数据链路层(包括逻…

「二叉树与递归的一些框架思维」

文章目录 0 二叉树1 思路2 刷题2.1 二叉树的最大深度题解Code结果 2.2 二叉树的直径题解Code结果 2.3 在每个树行中找最大值题解Code结果 2.4 翻转二叉树题解Code结果 2.5 二叉树展开为链表题解Code结果 2.6 每日一题:数组中两元素的最大乘积题解Code结果 0 二叉树 …

华为开源自研AI框架昇思MindSpore应用案例:Vision Transformer图像分类

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、环境准备与数据读取三、模型解析Transformer基本原理Attention模块 Transformer EncoderViT模型的输入整体构建ViT 四、模型训练与推理模型训练模型验证模型推理 近些年,随着基于自注意&…

Spring——Spring是什么?IoC容器是什么?

文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下…

Vue2基础四、生命周期

零、文章目录 Vue2基础四、生命周期 1、生命周期 Vue生命周期:一个Vue实例从 创建 到 销毁 的整个过程。生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 创建阶段:创建响应式数据挂载阶段:渲染模板更新阶段:修改…

基于K8s环境·使用ArgoCD部署Jenkins和静态Agent节点

今天是「DevOps云学堂」与你共同进步的第 47天 第⑦期DevOps实战训练营 7月15日已开营 实践环境升级基于K8s和ArgoCD 本文节选自第⑦期DevOps训练营 , 对于训练营的同学实践此文档依赖于基础环境配置文档, 运行K8s集群并配置NFS存储。实际上只要有个K8s集…

Spring Security内置过滤器详解

相关文章: OAuth2的定义和运行流程Spring Security OAuth实现Gitee快捷登录Spring Security OAuth实现GitHub快捷登录Spring Security的过滤器链机制Spring Security OAuth Client配置加载源码分析 文章目录 前言OAuth2AuthorizationRequestRedirectFilterOAuth2Log…

matlab多线程,parfor循环进度,matlab互斥锁

一. 内容简介 matlab多线程,parfor循环进度,matlab互斥锁 二. 软件环境 2.1 matlab 2022b 2.2代码链接 https://gitee.com/JJW_1601897441/csdn 三.主要流程 3.1 matlab多线程 有好几种,最简单的,最好理解的就是parfor&am…

cpolar内网穿透外网远程访问本地网站

文章目录 cpolar内网穿透外网远程访问本地网站 cpolar内网穿透外网远程访问本地网站 在现代人的生活中,电脑是离不开的重要设备,大家看到用到的各种物品都离不开电脑的支持。尽管移动电子设备发展十分迅速,由于其自身存在的短板,…