cookie和session的区别(全面总结)

前言

前些天在面试合合信息科技的实习生时,笔试时遇到cookie和session的对比,今天来个全面总结。面试

cookie

Cookie是访问某些网站之后在本地存储的一些网站相关的信息,下次再访问的时候减小一些步骤。
Cookie中通常包括以下主要内容:数据库

  1. key:设置的cookie的key。
  2. value:key对应的value。
  3. max_age/expire_time:设置cookie的过时时间。
  4. domain:该cookie在哪一个域名中有效。通常设置子域名,好比cms.example.com。
  5. path:该cookie在哪一个路径下有效。

例如,咱们登陆某一个网站时须要输入用户名及密码,若是用户名和密码保存为cookie,则下次咱们登陆该网站的时候就不须要再输入用户密码了。api

session

session是存在服务器的一种用来存放用户数据的类HashTable结构。
浏览器第一次发送请求时,服务器自动生成了一HashTable和一SessionID来惟一标识这个HashTable,并将其经过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的SessionID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的全部Session ID进行对比,找到这个用户对应的HashTable。跨域

例如,咱们浏览一个购物网站,用户将部分商品添加到购物车中,许久之前许多网站都是用服务端session存储购物车内容(如今基本都是用数据库了),就用到了session存储这部分信息。浏览器

区别

1.存储位置不一样

cookie的数据信息存放在本地。
session的数据信息存放在服务器上。安全

2.存储容量大小不一样

cookie存储的容量较小,通常<=4KB。
session存储容量大小没有限制(可是为了服务器性能考虑,通常不能存放太多数据)。服务器

3.存储有效期不一样

cookie能够长期存储,只要不超过设置的过时时间,能够一直存储。
session在超过必定的操做时间(一般为30分钟)后会失效,可是当关闭浏览器时,为了保护用户信息,会自动调用session.invalidate()方法,该方法会清除掉session中的信息。cookie

4.安全性不一样

cookie存储在客户端,因此能够分析存放在本地的cookie并进行cookie欺骗,安全性较低。
session存储在服务器上,不存在敏感信息泄漏的风险,安全性较高。session

5.域支持范围不一样

cookie支持跨域名访问。例如,全部a.com的cookie在a.com下都能用。
session不支持跨域名访问。例如,www.a.com的session在api.a.com下不能用。并发

6.对服务器压力不一样

cookie保存在客户端,不占用服务器资源。
session是保存在服务器端,每一个用户都会产生一个session,session过多的时候会消耗服务器资源,因此大型网站会有专门的session服务器。

7.存储的数据类型不一样

cookie中只能保管ASCII字符串,并须要经过编码方式存储为Unicode字符或者二进制数据。 session中可以存储任何类型的数据,包括且不限于string,integer,list,map等。

相关文章
相关标签/搜索