python爬虫之---------------cookie和session

cookie

1. cookie的由来:

大家都知道HTTP协议是无状态的。

无状态:是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。

用一句有意思的话来描述: 人生若只如初见,对服务器来说,每次的请求都是全新的。

状态:客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此cookie就是在这样一个场景下诞生。

2. 什么是cookie

cookie:指一段小信息,它是服务器发送出来存储在浏览器上的一组 组 键值对,下次访问服务器时浏览器会自动携带这些 键值对,以便服务器提取有用信息。

3. cookie的原理

cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。

session

1. session的由来

cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是session。

问题来了,基于HTTP协议的无状态特征,服务器根本就不知道访问者是“谁”。那么上述的cookie就起到桥接的作用。

我们可以给每个客户端的cookie分配一个唯一的id,这样用户在访问时,通过cookie,服务器就知道来的人是“谁”。然后我们再根据不同的cookie的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。

总结而言:cookie弥补了HTTP无状态的不足,让服务器知道来的人是“谁”;但是cookie以文本的形式保存在本地,自身安全性较差;所以我们就通过cookie识别不同的用户,对应的在session里保存私密的信息以及超过4096字节的文本。

cookie和session其实是共通性的东西,不限于语言和框架

2. session的生命周期

session 存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),sessinon 在用户访问第一次访问服务器时创建,需要注意只有访问JSP、servlet等程序时才会创建 session,只访问HTML、image等静态资源并不会创建session,可调用 request.getSession(true)强制生成session。

cookie 和session 的区别:

  1. cookie数据存放在客户的浏览器上,session数据放在服务。
  2. cookie不是很安全,别人可以分析存放在本地的cookie并欺骗cookie, 考虑到安全应当使用session。
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  4. 单个cookie保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存20个 cookie。

在这里插入图片描述

发布了49 篇原创文章 · 获赞 5 · 访问量 2002

猜你喜欢

转载自blog.csdn.net/qq_44619595/article/details/104381605
今日推荐