Python中Flask怎么设置读取和删除客户端的Cookie信息

夜磊姑娘_2101

夜磊姑娘_2101

2026-09-14

181人浏览

原创

flask通过request.cookies字典读取客户端cookie,需用.get()方法安全获取键值以避免keyerror;删除则需用make_response().set_cookie()设置同名、空值、过期时间极早且path/domain/secure等参数完全一致的cookie。

python中flask怎么设置读取和删除客户端的cookie信息

Flask怎么读取客户端Cookie

Flask通过 request.cookies 字典读取客户端发送的Cookie,它自动解析 Cookie 请求头并转为键值对。注意:只包含HTTP请求中实际携带的Cookie,不包含已过期、被浏览器拒绝或未设置 HttpOnly=False(但不影响读取)的项。

常见错误是直接访问不存在的key导致 KeyError,正确做法是用 .get() 并指定默认值:

from flask import Flask, request
<p>app = Flask(<strong>name</strong>)</p><p>@app.route('/check')
def check_cookie():</p><h1>安全读取,避免 KeyError</h1><pre class="brush:python;toolbar:false;">user_id = request.cookies.get('user_id', None)
theme = request.cookies.get('theme', 'light')  # 默认值 fallback
return f"user_id: {user_id}, theme: {theme}"

如果需要解析带签名的Cookie(如Flask的 session),不能直接从 request.cookies 解析——那是 flask.session 的职责,和普通Cookie无关。

Flask怎么删除客户端Cookie

Flask本身没有“删除Cookie”的内置方法,本质是让浏览器清掉对应键:通过 make_response() 设置一个同名、空值、过期时间极早的Cookie,并确保 domain 和 path 与原设置完全一致,否则浏览器不会覆盖。

关键点:

python-parallelization
python-parallelization

将顺序 Python 代码转换为并行/并发实现,用于在需要并行化 Python 代码、提升性能时使用。

下载
  • expires 必须是过去的时间(如 datetime(1970, 1, 1)),不能只靠 max_age=0 ——某些旧浏览器对 max_age 支持不一致
  • path 和 domain 参数必须和当初 set_cookie() 时一模一样,否则新Cookie会被视为另一个独立条目,旧的仍存在
  • 若原Cookie设了 secure=True 或 httponly=True,删除时也得带上相同标志,否则可能失败

示例:

from flask import Flask, make_response, request
from datetime import datetime
<p>@app.route('/logout')
def logout():
resp = make_response('logged out')</p><h1>假设当初是这样设的:response.set_cookie('session_id', 'xxx', max_age=3600, path='/', secure=True)</h1><pre class="brush:python;toolbar:false;">resp.set_cookie(
    'session_id',
    '',
    expires=datetime(1970, 1, 1),
    path='/',
    secure=True,
    httponly=True
)
return resp

为什么有时候Cookie删不掉或读不到

这不是Flask的问题,而是HTTP Cookie机制本身的约束,容易踩坑的地方集中在路径、域名和安全上下文上:

  • 开发时用 http://localhost:5000 设的Cookie,却在 http://127.0.0.1:5000 下读不到——因为浏览器视二者为不同域名
  • 前端用 fetch 发请求没带 credentials: 'include',后端就收不到Cookie(尤其跨域时)
  • 本地测试启用了HTTPS代理(如ngrok),但Flask没配 SESSION_COOKIE_SECURE=True,导致浏览器拒绝发送Cookie
  • Cookie的 SameSite 默认行为在新版Chrome中更严格,SameSite=Lax 下重定向后的POST可能不带Cookie

调试建议:用浏览器开发者工具的 Application → Cookies 面板,确认Cookie是否存在、Domain/Path/Expires是否符合预期,再比对后端代码里的参数。

要不要用Flask-Login或直接操作session

如果目标是用户登录态管理,别手动读写 user_id 这类Cookie——直接用 flask-login。它把用户ID加密存进签名Cookie(session),自动处理有效期、刷新、登出逻辑,且默认防篡改。

自己手管Cookie只适合极简场景(比如记住主题色、语言偏好),且必须意识到:普通Cookie可被用户修改,敏感信息绝不能明文放进去;签名Cookie要用 flask.session,而不是自己拼 hmac。

真正难的不是调用 set_cookie 或 get,而是保证整个生命周期里 domain/path/secure/samesite 四个维度始终对齐——漏一个,就读不到、删不掉、跨不过域。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1751

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4524

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1729

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

26637

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3227

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3247

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1183

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2523

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习