前言
HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。不然有些情况下即使是同一个网站每打开一个页面也都要登录一下。而Session和Cookie就是为解决这个问题而提出来的两个机制。
cookie
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持状态的方案
Cookie的主要内容包括:名字,值,过期时间,路径和域。使用Fiddler抓包就可以看见,比方说我们打开百度的某个网站可以看到Headers包括Cookie,如下:
key, value形式的存在,过期时间可设置的,如不设,则浏览器关掉就消失了,存储在内存当中,否则就按设置的时间来存储在硬盘上的,过期后自动清除
session
保存在服务端的一个键值对
浏览器第一次发送请求时,服务器自动生成了session来标记这个用户,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到对应的用户
一般这个值会有个时间限制,超时后毁掉这个值,默认30分钟。
当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
session和cookie的关联
Session的实现方式和Cookie有一定关系。建立一个连接就生成一个session,打开几个页面就好几个了,这里就用到了Cookie,把session 存在Cookie中,每次访问的时候将Session 带过去就可以识别了.