session与cookie的区别

来源:互联网 发布:饶毅毕业致辞知乎 编辑:程序博客网 时间:2024/06/03 21:16

1.什么是cookie

     Cookie实际上是一小段的文本信息保存在客户端。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

 1、会话Cookie和持久Cookie

若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在

硬盘上而是保存在内存里,当然这种行为并不是规范规定的。

若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在浏览器的不同进程间共享。

这种称为持久Cookie。 

  2、Cookie具有不可跨域名性

浏览器访问百度不会带上谷歌的cookie。


2.什么是session

     Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器用cookie保存。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,从而找到这个用户对应的Session,如果没有找到就再创建一个新的session和sessionId。

  1、session的创建:

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了sessionId,如果已包含则说明以前已经为此客户端创建过session,服务

器就按照sessionId把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含sessionId,则为此客户端创建一个session并且生成一个与此session相关

联的sessionId,sessionId的值是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionId将被在本次响应中返回给客户端保存。

  2、禁用cookie:

  如果客户端禁用了cookie,通常有两种方法实现session而不依赖cookie。

1)URL重写:就是把sessionId直接附加在URL路径的后面。

2)表单隐藏字段:就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如: 

<form name="testform" action="/xxx"> 
   <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
   <input type="text"> 
</form>


3.Session与Cookie特性的总结
  1. cookie存储在客户端、session存储在服务器端。
  2. session依赖于cookie
  3. session一直存储在服务器内存中。当浏览器不变时请求的是同一个Session。当浏览器关闭时候,再打开session就会发生变化(“只要关闭浏览器,session就消失了”),原因:其实关闭浏览器前的session并没有消失,只是在关闭浏览器的时候seesionId消失了,再次打开浏览器时无法找到原来的session了,如果把原来的sessionId再发服务器,还是能找到原来的Session。
  4. cookie 当设置cookie不设置生命周期时,保存在内存中,当关闭浏览器时cookie被清空。当设置生命周期时候,cookie被保存在硬盘中。sessionId 默认通过Cookie存储在浏览器的内存中,所以关闭浏览器,sessionId会消失当浏览器禁用cookie时,通过URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段等技术重新将Session提交给服务器。
  5. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
  6. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  7. 考虑服务器性能建议使用cookie。

原创粉丝点击