工作挺久了,但是对Cookie和Session一直都是懵懵懂懂,哈哈哈~~~,这几天在网上看很多关于Cookie和Session 的文章,也学习了一些视频,终于好像有点弄懂了,记录一下。
为什么会出现Cookie 和Session呢???
由于Http是一个无状态连接协议,那么也就是说,http的每一次请求都是独立的,这样的话,是没有办法判断每次的请求者是谁,因此,就有了session和cookie的出现。用session和cookie来追踪会话,cookie通过在客户端记录信息来确认用户身份,session是通过服务器端记录信息来确定用户身份信息。
Cookie机制
cookie技术是客户端解决方案。通过我自己写的一个小栗子来剖析一下cookie 的工作原理:
1.cookie 创建
从例子中我们可以看出是通过 HttpServletResponse 的add 方法将cookie信息响应给客户端:从图中可以看出后台创建的cookie信息在响应头中Set-Cookie 中
在客户端我们可以查看到我们创建的cookie信息是以文本信息存储在本地客户端
下面再看一下如何获取cookie信息:
2.cookie获取
从图中可以看出cookie是一个数组类型。所以说cookie是可以存储多个用户身份信息的。发送请求时可以看到request Hearders 将cookie信息传送到后台。Cookie[] cookies = req.getCookies();后台通过getCookies()方法获取cookie来确定用户身份。这就是整个http请求与响应cookie会话的工作原理。
3.session 的创建
我们还是通过一个小栗子来认识session的工作机制
从图中可以看出session也是响应到response headers Set-Cookie中,session与cookie不同的是session响应给客户端是JSESSIONID而真正的session信息是存储在服务器端的。 而cookie响应的是cookie信息,从这两者中应该可以看出,session会话是比较安全的不用暴露用户信息,而cookie是不安全,容易被伪造cookie信息。
4.seesion 获取
可以看出session 会话是依赖于cookie的,当客户端向服务器端发送请求时是通过response headers Cookie 发送sessionid 到服务器,服务器会根据sessionId 获取该会用的session信息也就是用户身份信息。
到这里Session 与Cookie的工作机制就介绍完了~~~~,欢迎留下小爱心,鼓励一下程序员小姐姐^-^