Cookie与Session

描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。


Cookie:保存在本地客户端。
  如果不设置有效时间则默认为一次会话时间,即浏览器关闭即销毁。

应用:比如,存储用户的登录信息,用户名、密码。

Session:保存在服务器端,保存一次会话。
  当浏览器访问服务器时,服务器会创建一个session会话与当前客户端进行连接。

何时销毁:

  1. 程序调用HttpSession.invalidate()方法主动进行销毁;

  2. 距离客户端上一次发送请求超过了Session的最大有效时间;

  3. 服务器进程被停止。

应用:保存用户状态,比如购物车中添加商品。

Session的机制:
  一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。

  当程序需要为某个客户端的请求创建一个session的时候,服务器会首先检查这个客户端的请求中是否包含session标识-session id,如果已包含则说明以前为此客户创建过session,服务器就会根据session id把这个session检索出来使用;

  如果客户请求中不包含session id,则为此客户新建一个session并同时生成一个相关联的session id,这个session id将在本次响应中返回给客户端保存。

二者区别:

  • 存储数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象

  • 一个在客户端一个在服务端,因为Cookie在客户端所以可以编辑伪造,不是十分安全

  • Session过多时会消耗服务器资源,大型网站会有专门Session服务器,Cookie存在客户端没问题

  • 域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP跨域请求或者跨域资源共享

---------------- The End ----------------
0%