1、存放位置:
Session 存放在server端。
Cookie 存放在client;
2、保存形式:
Session保存在server的内存中(在server端设置超时时间,与浏览器设置无关);
Cookie以文件形式存放在client(能够通过浏览器设置进行更改、清除),单个cookie闻见一般限制为3k;
3、安全性:
Session 较安全。
Cookie 不安全(能够通过分析本地的cookie进行cookie欺骗);
4、性能:
Session 当訪问量增大时会占用server内存从而消耗server性能。
Cookie 不消耗server性能,考虑减轻server负荷能够考虑使用cookie;
5、persistent cookie(cookie)与 session cookie的 差别:
http是无状态协议,客户每次读取web页面时。server都会打开新的会话。
并且server也不会自己主动维护客户的上下文信息。
Session就是一种保存上下文信息的机制,它是针对每个用户的。变量的
值保存在server端,通过SessionID来区分不同的客户。
Session 是以 cookie 或 URL重写为基础的,默认使用cookie来实现。系统
会创建一个名为 jessionID 的输出cookie(我们叫做session cookie),差别于
persistent cookies(也就是我们常说的cookie),cookie是存放在硬盘上的。
而session cookie是存储在浏览器内存中的。我们一般是看不到session cookie
(jessionID)的。可是当我们吧浏览器的cookie禁用后,webserver会採用URL
重写的方式传递SessionID,我们就能够在浏览器地址栏看到 sessionid=KWJH
UG6JJM65HS2K6 之类的字符串,明确了原理。两者的差别就一目了然。
Session cookie 针对某一次会话而言。会话结束 session cookie 也就随着消失了;
persistent cookie 仅仅是存在与client银盘上的文本(一般是加密的),可能会遭到 cookie欺骗和针对cookie的跨站脚本攻击;
所以 session cookie 更安全。
session cookie 是不能跨窗体使用的,当你新开一个浏览器窗体进入同样页面时,
系统会赋予你一个新的 sessionID,这样我们信息共享的目的就达不到了,此时我们
能够先把 sessionID 保存在 persistent cookie 中。然后在新窗体中读出来,就能够得
到上一个窗体的 sessionID了,这样通过 session cookie 和 persistent cookie 的结合
就能够实现跨窗体的 session tracking (会话跟踪)。