Session和Cookie
【摘要】
Session和Cookie
Session和Cookie的基本原理SessionCookie
Session和Cookie的区别
在浏览网站的过程中,我们经常会遇到需要登录的情况...
在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面需要登陆之后才能访问,而且登录之后可以连续访问很多次网站,但是可能过一段时间就要重新登录。还有一些网站再打开浏览器时就自动登录了,而且长时间都不会失效。这里就涉及到Session
和Cookie
。
Session和Cookie的基本原理
Session
和Cookie
是用于保持HTTP
连接状态的技术。在网页或App
等应用中基本都会使用到,在爬虫中,也会经常遇到需要写到Cookie
应对一般的反爬,下面分别对Session
和Cookie
的基本原理做简要讲解。
Session
Session
代表服务器与浏览器的一次会话过程,这个过程可以是连续的,也可以是时断时续的。Session
是一种服务器端的机制,Session
对象用来存储特定用户会话所需的信息。Session
由服务端生成,保存在服务器的内存、缓存、硬盘或数据库中。
Session的基本原理
(1)当用户访问一个服务器,如果服务器启用Session
,服务器就要为该用户创建一个Session
,在创建Session
时,服务器首先检查这个用户发来的请求里是否包含了一个Session ID
,如果包含则说明之前该用户已经登陆过并为此用户创建过Session
,那么服务器就按照Session ID
把这个Session
在服务器的内存中查找出来。
(2)如果客户端请求中不包含Session ID
,则为该客户端创建一个Session
并生成一个与Session
相关的Session ID
。要求这个Session ID
是唯一的、不易寻找规律的字符串,这个Session ID
将在本次响应中返回到客户端保存,而保存这个Session ID
的正是Cookie
,这样在交互过程中浏览器可以自动地按照规则把这个标识发送给服务器。
Cookie
因为HTTP
是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web
应用程序的实现。在典型的网上购物场景中,用户通过页面购买了一些商品,等到结账时,由于HTTP
的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。为此,就需要用到Cookie
。服务器可以设置或读取Cookie
中包含的信息,借此维护用户与服务器会话中的状态。
Cookie
是有服务器生成后发送给客户端(通常是浏览器)的,Cookie
总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie
和硬盘Cookie
。
(1)内存Cookie:由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
(2)硬盘Cookie:保存在硬盘里,有一个过期时间,除非用户手动清理或到了过期时间,硬盘Cookie
不会被删除,其存在时间是长期的。所以,按存在时间,除非用户手动清理或到了过期时间,硬盘Cookie
不会被删除,,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie
和持久Cookie
。
Cookie的基本原理
(1)创建Cookie:当用户第一次浏览某个使用Cookie
的网站时,该网站的服务器就进行如下工作:给该用户生成一个唯一的识别码(Cookie ID
),创建一个Cookie
对象;默认情况下,它是一个会话级别的Cookie
,存储在浏览器的内存中,用户退出浏览器之后被删除。如果网站希望浏览器将该Cookie
存储在磁盘上,则需要设置最大时效(maxAge
),并给出一个以秒为单位的时间(其中将最大时效设为0则是命令浏览器删除该Cookie
);然后将Cookie
放入HTTP
响应报头,将Cookie
插入一个Set-Cookie HTTP
请求报头中。最终发送该HTTP
响应报文。
(2)设置存储Cookie:浏览器收到该响应报文后,根据报文头里的Set-Cookie
特殊的指示,生成相应的Cookie
,保存在客户端。该Cookie
中记录着用户当前的信息。
(3)发送Cookie:当用户再次访问该网站时,浏览器首先检查所有存储的Cookie
,如果存在该网站的Cookie
(即该Cookie
所声明的作用范围大于等于将要请求的资源),则把该Cookie
附在请求资源的HTTP
请求头上发送给服务器。
(4)读取Cookie:服务器接收到用户的HTTP
请求保存之后,从报文头获取到该用户的Cookie
,从中找到所需要的内容。
Cookie的基本原理图
Session和Cookie的区别
首先Session
是存储在服务器端的,Cookie
是存储在客户端的,所以Session
的安全性要高于Cookie
。再者,我们获取的Session
中的信息是通过存放在会话Cookie
中的Session ID
获取的,因为Session
是存放在服务器中的,所以Session
中的信息不断增加服务器的负担,我们会把一些重要的信息放在Session
中,不太重要的信息放在客户端Cookie
中,Cookie
分为两大类,会话Cookie
和持久化Cookie
,他们的生命周期和浏览器是一致的,浏览器关了会话Cookie
也就消失了,而持久话Cookie
会存储在客户端硬盘中。当浏览器关闭时会话Cookie
也就消失了,所以Session
也就消失了,Session
在什么情况下丢失,就是在服务器关闭时,或者Session
过期时(默认30分钟)。
文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_43965708/article/details/113801279
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)