cookie 和session的工作流程

转自: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对象,从而跟踪状态。

posted @ 2017-07-05 22:26  little_ab  阅读(...)  评论(...编辑  收藏