Session和Cookie的区别与联系

我心飞翔 分类:javascript

一、会话的概念

   会话就好比打电话,一次通话可以理解为一次会话。我们登录一个网站,在一个网站上不同的页面浏览,最后退出这个网站,也是一个会话。一个网站对于不同的用户会展示出不同的页面信息,但是在HTTP协议中,客户端请求服务端是一种无状态的连接-每次请求都是独立的请求,服务器怎么分辨这些请求是哪个用户发出的请求呢?

   如果不能分辨哪个用户发出的请求,就不知道该反馈哪个用户的信息回来,那试想我们登录网站之后,显示的都是别人的信息岂不乱套了。所以服务器需要知道发出请求的是谁,需要一个用户标识来保证会话的正常进行。

二、Session的概念

  Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。

  由于Session存放在服务器端,所以随着时间的推移或者用户访问的增多,会给服务器增加负担。使用的时候要考虑下服务器的性能。

三、Cookie的概念

  Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。

  由于Cookie是存放在客户端,是可见的,安全性就会很低。因此不建议将一些重要的信息放在cookie中。

四、两者的区别

 1、cookie数据存放在客户端,session数据放在服务器上。

 2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

 3、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑性能应当使用cookie。

 4、不同浏览器对cookie的数据大小限制不同,个数限制也不相同。

 5、可以考虑将登陆信息等重要信息存放为session,不重要的信息可以放在cookie中。

五、两者的联系

 1、都是用来记录用户的信息,以便让服务器分辨不同的用户。

 2、可以搭配使用,但都有自己的使用局限,要考虑到安全和性能的问题。

回复

我来回复
  • 暂无回复内容