cookie和session,介绍及区别

版权声明:转载请注明来处 https://blog.csdn.net/Daisy_zye/article/details/84747107

一,什么是会话跟踪?为什么要进行会话跟踪?

cookie和session,都是会话跟踪技术。那么什么是会话?为什么要跟踪?十万个为什么ing

会话,指一个终端用户与系统进行通信的过程。比如,A和B访问淘宝,分别分别用自己的账号和淘宝交互,就有两个不同的会话。

为什么进行会话跟踪呢?

访问淘宝这个行为,是根据http协议,来交互的。可是http,是一种无状态协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭。再次通信需要建立新的连接。

将http协议和会话联系起来,一个形象的例子是:A和B访问淘宝,分别有一个会话,A将一件商品放入购物车,B没有进行任何操作。

现在,有一个会话中记录了操作,将商品放入购物车,另一个会话中没有记录任何东西。目测有点完美~~~

但是当A和B下次访问淘宝时,两个人看到的购物车都是空的。

这是因为,虽然会话中记录的信息不同,但是,并没有标识,哪一个会话是A的,哪一个会话是B的。

所以,会话跟踪,顾名思义,就是跟踪一下,哪个会话是由哪个终端用户产生的。

二,cookie

cookie可以看成是一种http拓展。

有两个http头部专门用于设置及发送cookie。分别是Set-Cookie以及Cookie。

当客户端访问某个服务器,服务器返回一个http响应,响应中如果包含set-cookie,则指示客户端建立一个cookie,并且后续的http请求中,自动发送cookie到服务器端,直到cookie过期。

如果cookie生存周期是整个会话期间的话,会将cookie保存到内存中,关闭浏览器时清除。

如果cookie被保存到客户端硬盘中,关闭浏览器不会被清除,再次访问时,自动发送到服务器端。

上述过程也可以用下图来表示:

到现在,cookie跟踪会话过程应该清楚了,可也许还有同学要问:cookie怎么分清这是我和淘宝的会话,还是我和B站的会话?

cookie有个性质,叫不可跨域名性,域名不同,cookie是不能直接拿去用的。兄dei,放宽心~~  

三,session

客户端访问服务器的时候,将客户端信息以某种形式保存到服务器上,这就是session。

session是依赖于cookie的,因为信息被保存在服务器上,不同用户访问时,需要拿一个叫session_id的号码牌,去找自己的session信息,然后才能知道购物车里放了哪些东西。这个session_id,就是在建立session的时候,服务器返回给客户端的名为JSESSIONID的Cookie。

四,cookie和session的不同点及应用场景

不同点:cookie保存在客户端,session保存在服务器。

应用场景:cookie保存在客户端,不会增加服务器压力,访问量多,需要考虑服务器性能的情况下,建议使用cookie

                  session保存在服务器端,更安全,不用考虑cookie欺骗和分析本地cookie引发的安全问题,安全需求适合用session。

猜你喜欢

转载自blog.csdn.net/Daisy_zye/article/details/84747107