转自:http://blog.csdn.net/magic_miao/article/details/51871726
cookie的工作流程:
客户端访问服务器,服务器调用response.addCookie()方法,产生响应时,会产生set-cookie响应头,将cookie文本发送给客户端,客户端会将cookie文本保存起来,当客户端再次请求服务器时,会产生cookie请求头,将之前服务器发送的cookie信息,再发送给服务器,服务器就可以根据cookie信息跟踪客户端的状态。
----------
cookie的分类:
1 存放在客户端浏览器的缓存中,当浏览器不关闭,cookie信息一起存在,浏览器一关闭,cookie消失
2 存放在客户端的文件中,并可以设置cookie过期时间,过期时间之内,即使浏览器关闭,也可以将cookie信息发送给服务器,超过过期时间,cookie消失。
cookie信息是以文本方式存放在客户端的,所以容易引起一些安全隐患,所以不要把隐秘信息以cookie方式保存。
验证
我们来验证一下。
现在打开 http://localhost:3000
我们看到 Request Headers 并没有 Cookie 这个字段
但是 Response Headers 有了 Set-Cookie 这个字段
现在我们刷新一下页面,相当于重新向 http://localhost:3000/ 这个地址发起了一次请求。
现在我们就可以看到 Cookie 字段已经带上了,再刷新几次看 Cookie 也还是在的。
document.cookie
JS 提供了获取 Cookie 的方法:document.cookie,我们先去设置多几个 Cookie。
我们可以看到,Cookie 就是一段字符串。但这个字符串是有格式的,由键值对 key=value 构成,键值对之间由一个分号和一个空格隔开。
什么是 Cookie
说了这么多,大家应该知道 Cookie 是什么吧。整理一下有以下几个点:
Cookie 就是浏览器储存在用户电脑上的一小段文本文件
Cookie 是纯文本格式,不包含任何可执行的代码
Cookie 由键值对构成,由分号和空格隔开
Cookie 虽然是存储在浏览器,但是通常由服务器端进行设置
Cookie 的大小限制在 4kb 左右
----------
session的工作流程:
客户端访问服务器,服务器调用request.getSession()方法,产生session对象,用于跟踪用户的
状态,同时,给session对象分配一个唯一标识sessionId。为了管理session对象,以sessionId为键,以session对象为值,封装成Map集合。产生响应时,将sessionId以cookie方式发送给客户端,存放在客户端浏览器的缓存中。当客户端再次请求服务器,会将sessionId以cookie请求头的方式发送给服务器,服务器得到sessionId后,从Map集合中,得到session对象,从而跟踪状态。