cookie对象
-
客户端会话技术 将数据保存到浏览器
-
基于响应头set-cookie 与请求头cookie实现的
-
cookie机制
当用户使用浏览器访问一个支持Cookie的网站的时候,
用户会提供包括用户名在内的个人信息并且提交至服务器; 接着,
服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,
当然这些信息并不是存放在HTTP响应体(Response Body)中的,
而是存放于HTTP响应头(Response Header);
当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统
一的位置.自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次
发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。
有了Cookie这样的技术实现,服务器在接收到来自客户浏览器的请求之后,就能够通过分析存放于请求头的Cookie得 到客户端信息,
从而动态生成与该客户端相对应的内容。 通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,
如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。
graph TD
A((浏览器)) -->|请求 |B((服务器))
B -->|响应 且响应头带cookie| A((浏览器))
A-.-|下一次请求|C
B-.-|下一次请求|D
C((浏览器)) -->|请求 且请求头带cookie |D((服务器))
C -->|响应| D((浏览器))
创建与发送
- 通过response对象 明文或者加密保存至浏览器
- 服务器通过new Cookie(“name”,“cx”) ;创建Cookie对象并封装 用户信息;
- 服务器通过c2.setMaxAge(100) ;设定Cookie对象的生存时间;
- 传递正数:将cookie存到硬盘 秒为单位的生存周期 到期自动删除
- 传递负数:无论多少 表示默认 即随浏览器关闭消失
- 传递0:删除该cookie
- 默认情况下 当浏览器关闭后 cookie数据被销毁
- 服务器通过响应对象的addCookie(c1)方法;把Cookie对象发 送到客户端;
- 同时服务器会自动创建JSESSIONID对象 唯一识别该请求
- 通过request对象 将浏览器的cookie借由HTTP请求头发送至服务器 也通过 request获取cookie
- 当浏览器发
http://127.0.0.1:8080/Demo/jsp10/cookieDemo01.jsp
请求时; - 服务器创建cookie对象并且封装用户数据,把cookie对象发送 到客户端;
- 当浏览器发
http://127.0.0.1:8080/Demo/jsp10/cookieDemo02.jsp
请求时; - 在jsp页面通过
request.getCookies()
方法,通过getName() getValue()
取得与本次请求对应 的所有Cookie,并进行显示。 - 当浏览器为禁用cookie时 保存的cookie信息是在本地 与浏览器或者服务器重启无关
- 当浏览器发
cookie属性
- cookie属性分析(创建cookie时会有对应的setXXX(str)方法)
- Path 属性 —— 默认值为当前保存cookie的这个serlvet所在的 路径。 path属性设成"/";当前服务器的根目录下所有文件都可调用此cookie.
- 同一个服务器下部署多个项目时 项目间cookie共享的问题
- 通过setPath(String)设置cookie的获取范围
- Age 属性 - 默认值-1 在浏览器中存在; 0:删除文件中的 cookie和浏览器中的cookie。
- Domain - 域 -指定Cookie所在的域名 如果未指定,默认为设定该Cookie的域名。
- 解决不同服务器下部署(分布式部署)的项目间cookie共享的问题
- 如果设置的一级域名相同 那么多个服务器之间的cookie可以共享
- 比如新浪的同一个域名下的多个站点实现共享 则setDomain(".sina.com")后 以下站点cookie数据可以共享
www.sina.com
www.bbs.sina.com
www.news.sina.com
- Path 属性 —— 默认值为当前保存cookie的这个serlvet所在的 路径。 path属性设成"/";当前服务器的根目录下所有文件都可调用此cookie.
- 存储中文问题
- tomcat8之前不支持存储中文数据 存了会直接保存
- 需要将中文数据转码存储 —URL编码
- tomcat8之后支持存储中文数据
- tomcat8之前不支持存储中文数据 存了会直接保存
cookie特点与作用
-
特点
- 数据存储在浏览器 相较于存储在服务器的数据 安全没那么高
- 浏览器对于单个cookie的大小有限制(4kb) 对于同一个域名下的cookie数量也有限制(20个以下) 视特定浏览器具体情况
-
作用
- 一般用于存储少量的不太敏感的数据
- 在不登录的情况下 完成服务器对客户端的身份识别(设置百度搜索)