***1.cookie 和session ***
cookie 概述
cookie:在网站中, http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功
后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie 的出现就是为了解决这个
问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该
用户发送第二次请求的时候,就会自动的把上次请求存储的 cookie 数据自动的携带给服务
器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。 cookie 存储的数据量有限,
不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用 cookie 只能存储一些小量的
数据
1.Cookie 有有效期: 服务器可以设置cookie有效期,以后浏览器会清除cookie信息
2.Cookie 和域名有关系概念;
sesson概述
session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的
是, cookie 是存储在本地浏览器, session 是一个思路、一个概念、一个服务器存储授权信
息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但
是他们的目的都是服务器为了方便存储数据的。 session 的出现,是为了解决 cookie 存储数
据不安全的问题的
cookie和session结合使用
cookie和session结合使用: web 开发发展至今, cookie 和 session 的使用已经出现了一些
非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:
存储在服务端:通过 cookie 存储一个 session_id ,然后具体的数据则是保存
在 session 中。如果用户已经登录,则服务器会在 cookie 中保存一个 session_id ,下
次再次请求的时候,会把该 session_id 携带上来,服务器根
据 session_id 在 session 库中获取用户的 session 数据。就能知道该用户到底是谁,以
及之前保存的一些状态信息。这种专业术语叫做 server side session 。存储在服务器的
数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器
的资源,但现在服务器已经发展至今,一些 session 信息还是绰绰有余的。
将 session 数据加密,然后存储在 cookie 中。这种专业术语叫做 client side
session 。 flask 采用的就是这种方式,但是也可以替换成其他形式
2.FLlask 操作Cookie
cookies:在 Flask 中操作 cookie ,是通过 response 对象来操作,可以在 response 返回之
前,通过 response.set_cookie 来设置,这个方法有以下几个参数需要注意:
key:设置的cookie的key。
value: key对应的value。
max_age:改cookie的过期时间,如果不设置,则浏览器关闭后就会自动过期。
expires:过期时间,应该是一个 datetime 类型。
domain:该cookie在哪个域名中有效。一般设置子域名,比如 。
path:该cookie在哪个路径下有效
1.设置Cookie
from flask import Flask,request,Response
from flask import Blueprint
loginUrl = Blueprint('login', __name__)
@loginUrl.route('/api/v1', methods=['GET', 'POST', 'DELETE'])
def loginRun():
resp = Response("小李哥运维") #http响应
resp.set_cookie('username','breaklinux') #设置http cookie
return resp
```
2.验证浏览器写入Cookie
1.查看方法一
windows 打开浏览器访问路由 按F12 选择Network 查看访问请求

2.查看方法2
3.查看方法3 (建议使用方法三查看准确性高)

2.删除Cookie
@loginUrl.route('/del-cookie/', methods=['GET', 'POST', 'DELETE']) def delete_cookie(): resp = Response("删除小李哥运维Cookie") resp.delete_cookie('username') return resp
3.设置cookie过期时间
方法1
def loginRun(): resp = Response("小李哥运维设置cookie") resp.set_cookie('username','breaklinux',max_age=60) #设置60秒后cookie过期 return resp
验证设置是否生效
方法2
from datetime import datetime def loginRun(): resp = Response("小李哥运维设置cookie") expires = datetime(year=2021,month=12,day=11,hour=16,minute=0,second=0) #指定2021年12月12日凌晨0时0分0秒 #使用 expires参数,就必须使用格林尼治时间 #要相对北京时间少8小时 resp.set_cookie('username','breaklinux',expires=expires) #加8小时 东八时区 return resp
验证方法
距离现在时间
from datetime import datetime,timedelta @loginUrl.route('/api/v1', methods=['GET', 'POST', 'DELETE']) def loginRun(): resp = Response("小李哥运维设置cookie") expires= datetime.now() + timedelta(days=30,hours=16) #距离现在的时间 #使用 expires参数,就必须使用格林尼治时间 #要相对北京时间少8小时 resp.set_cookie('username','breaklinux',expires=expires) #加8小时 东八时区 return resp
















