cookie 与 session 深度区别
程序员文章站
2024-01-20 17:00:52
...
文章目录
概述:
Session 和 cookie 都是会话(Session)跟踪技术.
会话(Session)跟踪是Web程序中常用的技术, 用来跟踪用户的整个会话, 常用的会话跟踪技术是 Cookie 与 Session. Cookie 通过在客户端记录信息确定用户身份, Session 通过在服务器端记录信息确定用户身份.
项目中, 一般是登录信息放到session, 购物车的信息放在cookie.
Cookie
- Cookie是在客户端浏览器中记录信息确定身份
- cookie数据存放在客户的浏览器上
单个cookie保存的数据不能超过4k, 一般浏览器都限制一个站点最多保存20个cookie.
- cookie不是很安全, 别人可以分析存放在本地的COOKIE 并进行cookie欺骗, 若要考虑到安全应当使用session, 或者要对cookie 加密处理.
- 购物车一般使用cookie, 但是cookie是可以在客户端禁用的, 这时候我们要使用 cookie+数据库的方式实现, 当从 cookie中不能取数据时候, 就从数据库获取.
注意:
- cookie 以键值对的形式存储信息在浏览器
- cookie 不能跨域, 当前及其父级域名可以取值
- cookie 可以设置有效期
- cookie 可以设置 path
设置一个cookie : 在登录controller里使用cookie工具类设置, 并且将cookie加密即可
Session
- Session是在服务器端记录信息确定身份.
- Session的实现依赖于cookie, sessionId(session的唯一标识需要存放在客户端)
- Session数据放在服务器上.
- Session 会在一定时间内保存在服务器上, 当访问量增多, 会比较占用服务器内存的性能, 考虑到要增加服务器性能, 应该使用 cookie.
- 登录等重要的信息存在session中, 某些信息仅仅是需要保留, 则可以放到cookie中(购物车信息).
注意:
- 基于服务器内存的缓存, 是非持久化的, 如果服务器重启或者宕机, 该服务器的所有会话信息都会丢失, 他是有状态的session, 所以在往后的项目一般不会使用了, 会使用无状态的分布式session来取代.
- 每个session 通过sessionId 来区分不同的请求
- session 也是以键值对的形式存在的
- session 可以设置过期时间
案例: 设置 一个 session 会话 (前端的若是html页面则是使用不了的, jsp 能行)
@GetMapping("/setSession")
public Object setSession(HttpServletRequest request){
HttpSession session = request.getSession();
session.setAttribute("userInfo","new user"); // 设置一个session
session.setMaxInactiveInterval(3600); // 设置过期时间, 设置为 0 表示永不过时
session.getAttribute("userInfo"); // 根据session的键来得到该session的值
// session.removeAttrubute("userInfo"); // 手动移除这个session
return "ok";
}
上一篇: C语言移位运算符和 &=, ^=, |= ~= 的使用方法
下一篇: 反射与Annotation
推荐阅读
-
php关于对cookie与session的了解
-
cookie 与 session 深度区别
-
《PHP核心技术与最佳实践》-Cookie-Session深入
-
php中session与cookie的比较_php技巧
-
php中session_unset与session_destroy的区别分析
-
ASP.NET常见对象之Cookie、Session与Application
-
对比分析php中Cookie与Session的异同,对比分析cookie
-
PHP会话控制:Session与Cookie详解,sessioncookie_PHP教程
-
jQuery cookie 对Session和Cookie的区分与解释
-
PHP5中Cookie与 Session使用详解_PHP