Cookie
-
为什么要有Cookie?
- Http协议是一种无状态的协议,服务器无法从网络连接上确定用户身份。所以为了确定用户身份,使用Cookie作为“令牌”来管理用户身份等信息。
-
Cookie在客户端与服务端交互中的通信过程是怎样的?

Cookie是通过HTTP请求和响应头在客户端和服务器端传递的,一个Cookie的设置和传送过程大致与以上几个步骤:*客户端发送一个HTTP请求到服务器,服务器返回一个HTTP响应回客户端,在这个响应报文中包含了Set-Cookie头部。客户端再次访问服务端,携带Cookie头部,服务器端在返回一个HTTP响应到客户端。
cookie格式如下:
Set-Cookie: "name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure"
其中name=value是必选项,其它都是可选项。
- Cookie保存在哪里?
- Cookie以一小段文本的形式存放在客户端上,在需要记录状态的情形下,由服务器向客户端颁发一个Cookie,由客户端将Cookie进行存储,在后续的由客户端发起的请求中携带这个Cookie,由服务器对这个Cookie进行检查就可以辨识用户。
Session
-
为什么要有Session?
- 类似Cookie,Session也是一种弥补HTTP协议无状态弊端的机制。不同于Cookie的是Session存放在服务端。用户在通过浏览器访问服务器时,服务器把客户端传来的一些信息以某种形式记录在服务器上,客户再次浏览时只需要在服务器上查找Session即可。
-
谁创建了Session?
-
HttpSession是直到服务器端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。那么Session什么时候失效呢?
第一:session调用了 session.invalidate()方法。
第二:前后两次请求超出了session指定的生命周期时间。
-
-
Session于Cookie对比
- cookie数据存放在客户的浏览器上,session数据放在服务器上;
- cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
Cookie与Session虽然分别作用于客户端及服务端,但是Session对Cookie在一定程度上有依赖关系。服务端执行Session机制会创建Session的id值,客户端获得这个id后,客户端每次请求都会把这个id放入http请求报文头中发送给客户端。在客户端保存这个id值得容器就是Cookie。
网友评论