Cookie

来源:互联网 发布:java枚举类型定义常量 编辑:程序博客网 时间:2024/05/21 11:08
一,Http协议与Cookie
Cookie是服务器保存到客户端的.由服务器创建,保存到客户端.当客户端又一次访问服务器时,会将上次请求得到的Cookie再发送给服务器    
Cookie是由服务器创建保存到客户端浏览器的一个键值对.    
服务器保存Cookie的响应头:Set-Cookie: aaa=AAA Set-Cookie: bbb=BBB    
- response.addHeader("Set-Cookie","aaa=AAA");
- response.addHeader("Set-Cookie","bbb=BBB");
当浏览器请求服务器时,会将该服务器保存的Cookie随着请求发送给服务器.    
浏览器归还Cookie的请求头:Cookie:aaa=AAA;bbb=BBB    
- 不会直接通过请求头获取Cookie的键和值(麻烦),有专门的类可以实现.    

Http协议规定:
- 一个Cookie最大4kb
- 一个服务器最多向一个浏览器保存20个Cookie
- 一个浏览器最多可以保存300个Cookie    
有些浏览器会为了竞争,违反Http规定,但是也不会让一个Cookie占用太大的空间.    

二,Cookie的用途
- 服务器使用Cookie来跟踪客户端状态
- 保存购物车(购物车中的商品不能使用request保存,因为它是一个用户向服务器发送的多个请求信息)
- 显示上次登录名(也是一个用户多个请求)

**注:** Cookie是不能跨浏览器的!

三,JavaWeb中使用Cookie
- 原始方式:
  - 使用response发送Set-Cookie响应头
  - 使用request获取Cookie请求头
- 便捷方式:
  - 使用response.addCookie()方法向浏览器保存Cookie
  - 使用request.getCookies()方法获取浏览器归还的Cookie


 四,Cookie相关

- Cookie不只有name和value两个属性
- Cookie的maxAge:Cookie可保存的最大时长.以秒为单位.
  - maxAge>0:浏览器会将Cookie保存到客户机硬盘上,有效时长为maxAge的值决定.    
  - maxAge<0:浏览器只将Cookie保存到浏览器内存中,当用户关闭浏览器时,浏览器进程结束,Cookie被销毁.    
  - maxAge=0:浏览器会直接删除该Cookie(可用来删除原有Cookie)
  - 如果不设置maxAge属性,则Cookie默认会保存到当次会话结束时(关闭浏览器时);
- 关于Cookie的path:
  - 首先要明确Cookie的path并不是设置这个Cookie在客户端的保存路径.
  - Cookie的path由服务器创建Cookie时设置.
  - 一个服务器的路径有很多,这个服务器保存到客户端的Cookie也不唯一,那么当浏览器访问某一个路径时,要上传哪一个Cookie就是由Cookie的path决定的.
  - 浏览器访问服务器的路径,如果包含某个Cookie的路径,那么就会归还这个Cookie
原创粉丝点击