动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

探究网页中的Session和Cookies

07-27 16:59 210浏览
举报 T字号
  • 大字
  • 中字
  • 小字

我们在浏览网页时,会发现很多页面是需要登录的,不登录的话有很多功能实现不了。但是我们知道HTTP协议是无状态协议,那么我们在网站的各个网页间跳转时,为什么不需要重新登录账号呢?这就是Session和Cookies的功劳了,接下来,让我们一步一步解析Session和Cookies是什么。

首先,我们要弄懂网页的结构。网页内容由纯HTML编写,文字,图片等内容均通过写好的HTML代码来指定,这种页面叫做静态网页若想给url传入一个name参数,让其在网页显示,静态网页无法实现。于是动态网页产生了,它可以根据URL中参数的变化进行动态解析,关联数据库并呈现不同的页面内容,非常灵活多变。现在我们遇到的网站大多是动态网站,他们由JS,Python,JSP等语言编写,功能比静态网页强大很多。动态网站还可以实现用户登录和注册功能输入用户名和密码进行登录,可以看作是拿到了类似凭证的东西,有了它,才可以保持登录状态,访问登录之后才能看到的页面。这种类似凭证的东西就是Session和Cookies的产物。

当我们向服务器发送请求后,服务器解析此请求,然后返回对应的相应,服务器负责完成整个过程。 这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录也就是说如果后续处理需要前面的信息,就必须重传,这导致需要额外传递一些前面的重复请求,才能获取后续响应,然而这显然太浪费资源了。于是两种用于保持HTTP连接状态的技术就出现了,他们就是Session和Cookies。Session在服务端,也就是网站的服务器,用来保存用户的会话信息;Cookies在客户端(可以理解为浏览器端),有了Cookies,浏览器在下次访问网站时会自动附带上它发送给服务器,服务器通过识别Cookies鉴别出是哪个用户,判断是否是登录状态,然后返回对应的响应。

Cookies保存了登录的凭证,有了它,只需要在下次请求中携带Cookies发送请求 就不用重新输入用户名,密码等信息重新登录了。所以在爬虫中,一般会将登录成功后获取的Cookies放在请求头中直接请求,而不必重新模拟登录。

Session指有始有终的一系列动作/消息。比如,打电话时,从拿起手机拨号到挂断电话这一过程可以称为一个Session。而Web中,Session对象用来存储特定用户Session所需的属性和配置信息。这样,当用户在各个web网页之间跳转时,存储在Session对象的变量不会丢失,而是在整个Session中一直存在下去。当用户请求来自应用程序的web页时,如果该用户还没有Session,则Web服务器会自动创建一个Session对象。而当Session过期或被放弃的时候,服务器会终止该Session。

Cookies指某些网站为了辨别用户身份,进行Session跟踪而存储在用户本地终端上的数据。当客户端第一次请求服务器时,服务器会返回一个请求头中 带有 Set-Cookie 的字段的相应给客户端,用来标记是哪个用户,客户端浏览器会把Cookies保存起来。当浏览器下一次再请求该网站时,浏览器会把Cookies放到请求头中一起提交给服务器,Cookies携带了SessionID信息,服务器检查该Cookies即可找到对应的Session是什么,然后再判断Session来以此辨认用户状态。

成功登陆某个网站时,服务器会告诉客户端设置哪些Cookies信息,在后续访问客户端会把Cookies发送给服务器,服务器再找到对应的Session加以判断。如果Session中某些设置登陆状态是有效的,就证明用户处于登陆状态,此时返回登陆之后才可以查看的网页内容,浏览器进行解析,用户就可以看到内容了。

反之,如果传给服务器端的Cookies是无效的,或者Session已经过期了,就不能访问页面了,现在可能受到错误的相应或者 重新登陆的页面。

所以,Cookies和Session需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登陆Session控制。

在谈论Session机制时,会有这样一种误解:只要关闭浏览器,Session就消失了。 这种理解是错误的。对于Session来说,除非程序通知服务器删除Session,否则服务器会一直保留。session默认情况下30分钟服务器自动回收。如果想要修改session回收时间可以用setMaxInactiveInterval(int interval)。而Cookie默认关闭浏览器失效。如果不想让Cookie默认关闭浏览器失效,可以使用setMaxAge(int expiry) 来设置有效时间。

相信看完了本文,Session和Cookies有了清晰的认识了解对网页的登录和页面的运行跳转机制有了深的理解,并且能够理解Cookies和Session的互相配合的工作模式。当然,有兴趣的同学也可以浏览本站的专业视频课程,拓展更多关于Cookies和Session的知识。

0人推荐
共同学习,写下你的评论
0条评论
天行九歌
程序员天行九歌

6篇文章贡献29402字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消