详解HTTP协议中的Cookie-Session

目录

一.为什么要使用Cookie和Session

二.例子理解Cookie和Session

三.Cookie学习

1.Cookie概念

2.查看和学习页面上的Cookie信息

(1)查看当前网页的Cookie信息

 (2)通过Fiddler来查看当前页面的具体Cookie信息

四.会话机制(Session)的学习

1.有关Session的信息

2.服务端对于Session信息是如何处理的

3.servlet开发中session的设置

4.通过Fiddler来查看服务端是如何返回SessionId信息


一.为什么要使用Cookie和Session

Cookie和Session是客户端(网页)与服务端(服务器)进行沟通的一种中间工具,由于HTTP协议自身是无状态的,例如张三访问CSDN首页(网页一般是遵守http协议进行传输),然后登录自己的CSDN,那么之后如果张三写博客时,会从首页跳转到写博客的页面,当张三跳转到写博客页面的时候,服务端是如何知道当前是哪个用户访问写博客这个页面。这时候就需要借助Cookie和Session来实现这样的功能。

二.例子理解Cookie和Session

这里可以将Cookie比作成一个令牌,而服务器端需要通过Session机制来记录令牌信息,以及令牌中的用户信息。

三.Cookie学习

1.Cookie概念

Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)。使用Cookie的目的就是实现身份标识的功能。一般的Cookie存储在我们的内存中,而且Cookie是不可跨域名的,通俗的理解就是不同的服务器之间的Cookie不会发生冲突。

2.查看和学习页面上的Cookie信息

(1)查看当前网页的Cookie信息

 (2)通过Fiddler来查看当前页面的具体Cookie信息

 

可以看到上面不同页面携带的Cookie信息是基本是相同的 (里面的内容很多,只截取了一部分)。可以验证Cookie主要就是携带一些身份信息来帮助服务端来识别用户身份。

四.会话机制(Session)的学习

1.有关Session的信息

服务器同一时刻收到的请求是很多的. 服务器需要区分清楚每个请求是从属于哪个用户, 就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系。

因为会话本质就是就是一个Hash表,其中的key就是SessionId,value就是用户信息。其中的Session是一个标识身份的唯一性字符串,一个用户对应一个SessionId。

2.服务端对于Session信息是如何处理的

当用户登录的时候,服务器,会给该用户创建一个Seeion会话,然后给客户端通过Set-Cookie字段,将SessionId来返回客户端,客户端后续再发送请求的时候,就会在headers中的Cookie字段中携带上SessionId属性,然后服务器根据客户端请求中携带的SessionId来获取到对应的Session信息中的用户信息,接着再实现下一步操作。

3.servlet开发中session的设置

如果在Servlet开发的时候,当用户登录成功后服务端会获取请求中Cookie携带SessionId,无论存在,都将重新设置Seesion会话信息,而且服务端会自动给客户端在响应中携带一个SessionId信息,之后访问其他页面就可以根据请求中携带的Sessionid信息来判断是哪个用户在访问当前页面。

4.通过Fiddler来查看服务端是如何返回SessionId信息

 

可以看到,第一次登录的时候就在Set-Cookie中包含SessinId信息,之后访问其他页面就会携带该信息,通过之后请求中携带的Cookie信息来判断指定用户信息。


版权声明:本文为weixin_47651920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。