简介:
-
Cookie是HTTP协议制定的,先由服务器保存Cookie到浏览器,在下次浏览器请求服务器时把上一次请求得到的Cookie在归还给服务器
-
由服务器创建保存到客户端浏览器的一个键值对,服务器保存Cookie的响应头:Set-Cookie: aaa=AAA set-Cookie:bbb =BBB
response.addHeader(“Set-Cookie”,"aaa=AAA);response.addHeader(“Set-Cookie”,"aaa=AAA); -
当浏览器请求服务器时,会把该服务器保存的Cookie随请求发送给服务器,浏览器归还Cookie的请求头:Cookie: aaa=AAA;bbb=BBB
-
Cookie是不能跨浏览器的.
Http协议规定(为不给浏览器太大压力)
- 一个Cookie最大4K
- 一个服务器最多向一个浏览器保存20个Cookie
- 一个浏览器最多可以保存300个Cookie
- 但是由于各种浏览器竞争很激烈,所以很多浏览器都在一定范围内违反了Http协议规定,但也不会超过4G
Cookie的用途
- 服务器使用Cookie来跟踪客户端状态
- 保存购物车(因为它是一个用户向服务器发送的多个请求.)
- 显示上一次登陆名(不要保存密码,不安全)
JavaWeb中使用Cookie
-
原始方式:(了解,不常用)
使用response发送Set-Cookie响应头
response.addHeader(“Set-Cookie”,“ccc=CCC”);
使用request获取Cookie请求头
request.getHeader(“Cookie”),返回所有Cookie键值对字符串,以;隔开 -
便捷方式:(常用)
使用response.addCookie()向浏览器保存Cookie
Cookie cookieB=new Cookie(“aaa”,“AAA”);
response.addCookie(cookieA);
使用request.getCookes()从浏览器获取Cookie
Cookie[] cookies=request.getCookies();
Cookie详解
-
Cookie不只有name和value两个属性
-
Cookie的maxAge属性(掌握):即Cookie的最大保存时间,单位秒,以cookie.setMaxAge(60)来设置maxAge属性
maxAge>0:浏览器会把Cookie保存到硬盘上,有效时间由maxAge值决定
maxAge=0:浏览器会马上删除该Cookie
maxAge<0:Cookie只会在浏览器内存中存在,浏览器关闭则消失,默认效果 -
Cookie的path属性(理解):设置cookie的path属性,当浏览器访问的路径包含了path路径时浏览器会自动将该cookie传给服务器,否则不传.
path属性由服务器创建cookie时创建,默认是当前访问路径的父路径
浏览器访问服务器的路径中如果包含某个cookie的路径,name就会归还这个cookie
例如:aCookie.path=/learn/;bCookie.path=/learn/jsps/;cCookie.path=/learn/jsps/cookie/;
访问:/learn/index.jsp可以得到aCookie
访问:/learn/jsps/a.jsp可以得到aCookie和bCookie
访问:/learn/jsps/cookie/cookie.jsp可以得到aCookie和bCookie和cCookie; -
Cookie的domain属性(了解):domain用来指定Cookie的域名,当多个二级域共享Cookie时才使用
例如www.baidu.com,zhidao.baidu.ocm,tieba.baidu.com之间共享Cookie时可以使用domain
设置domain:cookie.setDomain(".baidu.com");
设置path:cookie.stPath("/");