理解Session和Cookie

HTTP本身是无状态的,一个请求发送之后和下一个请求是没有直接关系的,但是在实际应用中,需要构建前后exist关系场景,比方说在当当买书,把一本书加入购物车中之后,又狂了一下商城,这时你再回来付款时候,购物车中不能不存在这本书,这就需要Session和Cookie帮助我们保存这样的信息。

Cookie建立在客户端。图解如下:

1.浏览器在向服务器发送第一个不附带Cookie的请求时,服务器拿到这个之后,认证通过返回响应,可以设置这个响应的cookie,cookie中附带信效期;

2.之后,浏览器将解析拿到的cookie保存到本地,浏览器在发送下一次请求或之后的请求中,附带上cookie,服务器收到请求解析cookie识别cookie信息,发现这个cookie确实是第一次自己发送给浏览器的,就返回一个响应;

requests库中获得cookie的方法是:
r=requests.get(url)
r.cookies['cookiename']
下次发送时,就设置cookie:
cookies=dict(c='uid')
requests.get(url,cookies=cookies)

这样的缺点是,每次请求数据都要带上cookie,增加带宽。另外cookie可以伪造,关系到安全问题。

Session建立在服务端。图解如下:

Session这种方式就是在服务器端将用户信息存储下来。

1.浏览器发送第一个请求,服务器开辟资源用来存储session;(会话管理器是系统中第一个创建的用户态模式进程

2.服务器给一个response也带有cookie,但是这个时候,占用带宽很小,可能只是简单的返回了一个 session-id,这个session-id是什么根据服务器采取的策略定,可能是一个认证码;

3.在之后的浏览器请求中,带上cookie,服务器将session-id解析出来,去跟数据库匹配,查看这个session-id对应的权限信息,用户信息到底是什么。这个过程就是把存储从浏览器转移到了服务器端。

session和cookie其实就是将带宽压力转移成了服务器的存储压力,requests库主要是支持编程,对于服务器端编程,可以借助框架Django等都有实现session,cookie的机制。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值