因为HTTP请求是无状态的,当同一请求client再次进行请求时,server无法记住用户的,为了让server知道用户,引入了Session和Cookie。
cookie
和session
都是用来跟踪浏览器用户身份的会话方式。
Cookie主要用来记录用户状态,区分用户,状态保存在客户端
。
Session主要用来记录用户状态,区分用户,状态保存在服务端
。
Cookie工作原理
- 浏览器端第一次发送请求到服务器端
- 服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
- 浏览器端再次访问服务器端时会携带服务器端创建的Cookie
-
服务器端通过Cookie中携带的数据区分不同的用户
Cookie.jpg
怎样删除Cookie?
- 新Cookie覆盖旧Cookie。
- 覆盖规则:name、path、domain等需要与原Cookie一致。
- 设置Cookie的expire等于过去的某一时间点,或者设置maxAge=0。
怎样保证Cookie的安全?
- 对Cookie进行加密处理
- 只在https上携带Cookie
- 设置Cookie为httpOnly,防止跨站脚本攻击。
Session工作原理
- 浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
- 浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
- 服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。
name为JSESSIONID的Cookie不存在(关闭或更换浏览器),返回1中重新去创建Session与特殊的Cookie
name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象
value为SessionId不存在(Session对象默认存活30分钟),返回1中重新去创建Session与特殊的Cookie
value为SessionId存在,返回session对象
Session工作流程.jpg
网友评论