【网络】CookieSession
长期更新各种好文,建议关注收藏点赞!
目录
- Cookie
- Session
- Cookie+Session认证方式
- Cookie v.s. Session
Cookie
针对http协议无连接、无状态设计的可以在浏览器端存储用户临时不敏感信息,默认大小4k,可以随意访问,没有安全性,存储的数据类型受浏览器限制。
Session
会话,用户登陆期间产生的通信数据保存在session中,是服务端中存储的用户信息,不能随意访问,安全性较高,存储的大小和数据类型由服务器决定。
- session自动管理cookie
cookie中的数据都需要服务器传递session_id过来,故收到服务器管理的session管理。故在实例中可以不用手动处理这些,见下方所示。 - 举个栗子🌰
创建1个session实例
使用session实例,调用get,获取验证码 (无需获取cookie)
继续使用session实例,调用post,发送登陆请求(无需携带cookie)
继续使用session实例,调用get,发送获取我的订单请求(无需携带cookie)
import requests
#代码中全程见不到cookie的处理
session =requests.Session()
resp_v=session.get(url="verifycode_path")
resp_login=session.post(url="login_path",data={"username":username,"password":password,"verify_code":verifycode,
})
print(resp_login.json())
resp_order=session.get(url="order_url")
print(resp_order.json())
'''
获取指定的响应数据
resp.url
resp.status_code
resp.cookies
resp.headers
resp.text /json()
注意:不是所有响应数据都能用json()转换过来!!
'''
Cookie+Session认证方式
认证用户身份方式有多种。包括token,cookie+session认证。
import requests
resp_v=requests.get(url="verifycode_path")
my_cookie=resp_v.cookies
resp_login=requests.post(url="login_path",data={"username":username,"password":password,"verify_code":verifycode,
},cookies=my_cookie)
print(resp_login.json())
resp_order=requests.get(url="order_url",cookies=my_cookie)
print(resp_order.json())
Cookie v.s. Session
数据存储位置:浏览器 ; 服务器;
安全性:随机获取;加密存储;
数据类型:受浏览器限制;服务器存储,支持所有数据类型;
大小:默认4k;服务器空间大小;