Cookie和Session的区别
Cookie
Cookie简介
工程师 针对 http协议是无连接、无状态特性,设计的 一种技术。 可以在浏览器端 存储用户的信息。
- cookie 用于存储 用户临时的不敏感信息。
- cookie 位于浏览器(客户端)端。默认大小 4k(可以调整)
- cookie 中的数据,可以随意被访问,没有安全性可言。
- cookie 中存储的数据类型, 受浏览器限制
Cookie+Session认证方式
- ihrm项目:token认证。
ihrm项目链接: https://ihrm-java.itheima.net/#/login - tpshop项目:cookie+Session认证。
tpshop项目链接: https://demo6.tp-shop.cn/
Cookie案例
完整实现 TPshop商城登录,并获取 “我的订单” 页面数据。
import requests
# 发送 获取验证码请求
resp_v = requests.get(url="https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify&r=0.8499713160376936")
# 从获取验证码 的响应结果,提取 cookie
my_cookie = resp_v.cookies
# # 发送登录请求 url、请求头、请求体。 携带 cookie。 得响应结果
resp = requests.post(url="https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login&t=0.0991908925403584",
#headers={"Content-Type": "application/x-www-form-urlencoded"},
data={"username": "15673271937", "password": "123456", "verify_code": "JSXG"},
cookies=my_cookie)
#打印响应结果
print(resp.json())
#发送 查看我的订单 请求
resp_o = requests.get(url="https://demo6.tp-shop.cn/index.php/Home/Order/order_list.html", cookies=my_cookie)
print(resp_o.text)
get验证码获取
post请求登录密码错误
订单获取
Session
Session简介
也叫会话。通常出现在网络通信中,从客户端借助访问终端登录上服务器,直到退出登录所产生的通信数据,保存在会话中。
- Session 用于存储用户的信息。
- Session 位于服务端。大小直接使用服务器存储空间。
- Session 中的数据,不能随意被访问,安全性较高。
- Session 中存储的数据类型,受服务器影响,几乎能支持所有的数据类型。
Session自动管理Cookie
因为 Cookie 中的 数据,都是 Session 传递的。因此,Session 可以直接 自动管理 cookie。
Session案例
借助session重新实现 上述 TPshop商城登录,并获取 “我的订单” 页面数据。
import requests
# 1. 创建一个 Session 实例。
session = requests.Session()
# 2. 使用 Session 实例,调 get方法,发送 获取验证码请求。(不需要获取cookie)
resp_v = session.get(url="https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify&r=0.8499713160376936")
# 3. 使用 同一个 Session 实例,调用 post方法,发送 登录请求。(不需要携带 cookie)
resp = session.post(url="https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login&t=0.0991908925403584",
data={"username": "15673271937", "password": "339455", "verify_code": "JSXG"})
print(resp.json())
#4. 使用 同一个 Session 实例,调用 get 方法,发送 查看我的订单请求。(不需要携带 cookie)
resp_o = session.get(url="https://demo6.tp-shop.cn/index.php/Home/Order/order_list.html")
print(resp_o.text)
面试题 Cookie 和 Session 区别
数据存储位置
cookie存储在浏览器;session存储在服务器
数据存储位置
cookie中的数据可以随意获取,没有安全性可言。Session的数据多为加密存储,安全较高
数据类型
cookie支持的数据类型受浏览器限制,较少;Session直接使用服务器存储,支持所有数据类型
大小
cookie大小默认 4k; Session 大小约为服务器存储空间大小
获取指定响应数据
获取 URL:
resp.url
获取 响应状态码:resp.status_code
获取 Cookie:resp.cookies
获取 响应头:resp.headers
获取 响应体:
- 文本格式:
resp.text
- json格式:
resp.json()