1、存储位置不同
- cookie的数据信息存放在客户端浏览器上
- session的数据信息存放在服务器上
(PS:因为存储位置的不同,当用户禁用了客户端浏览器cookie时,将无法正常生成cookie但是session依旧可以正常生成,但是不能正常使用。)
2、存储容量不同
- 单个cookie保存的数据<=4KB,一个站点最多保存20个cookie
- 单个session保存的数据理论上来说没有上限
(PS:从性能考虑,session不要存过多的东西并设置删除机制)
3、存储内容不同
- cookie中只能保存ASCII字符串
- session中能够存储任何类型的数据,例如 string,list,map等等
(PS: 在cookie里面直接存中文会乱码
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String s="这是一段中文"; Cookie cookie=new Cookie("key",s); resp.addCookie(cookie); }
)
4、隐私策略不同
- cookie对客户端是可见的,可以通过分析存放在本地的cookie然后进行cookie欺诈,所以安全性比session弱
- session存在服务器上,在客户端存的是一个id,风险小
5、有效期不同
- cookie可以通过设置属性达到长期有效得效果
- session依赖于JSESSIONID这个cookie,但是这个cookie的过期时间默认为-1,所以关闭窗口session会失效,因而session不能达到长期有效。
6、跨域支持不同
- cookie支持跨域名访问
- session不支持跨域名访问