Cookie

HTTP协议与cookie(服务器发给客户端来保存的)

  • cookie是HTTP协议制定的,先由服务器保存cookie到客户端,在下次请求服务器时把上一次请求到的cookie在归还给服务器
  • 由服务器创建保存到客户端浏览器的是一个键值对,服务器保存cookie的响应头;Set-Cookie:aaa=AAA
  • 当浏览器再次请求服务器时,会把该服务器保存的cookie随请求发送给服务器,浏览器归还cookie的请求头:Cookie:aaa=AAA;bbb=BBB
  • http协议规定
    • 一个cookie最大4kb
    • 一个服务器最多向一个浏览器保存20个cookie
    • 一个浏览器最多可以保存300个cookie
    • cookie不安全,可能泄露用户信息,所以浏览器支持禁用Cookie
  • 某些浏览器可cookie容量会更大

cookie的用途

  • 服务器使用cookie来跟踪客户端状态
  • 显示上次用户登录的用户名

javaweb中使用cookie

  • 原始方式
    • 使用response发送Set-cookie响应头
    • 使用request获取cookie请求头
  • 便捷方式
    • 使用response.addCookie(Cookie)方法向浏览器保存cookie
    • 使用request.getCookies()方法获取浏览器归还的cookie
  • ==注意,cookie的值不能直接存放中文==
    • cookie的值中是不能直接存放中文的,需要使用URLEncoder.encoder(String,String charset)进行编码,才可以响应给客户端
    • 同理,服务器获取到的cookie,必须进行URLDecoder.decode(String cookiename,String charset)进行解码

cookie声明周期

  • cookie不只有name和value两个属性
  • Cookie的setMaxAge(int expiry)设置Cookie的最大生命值,==单位是秒==
    • expiry>0:浏览器会吧Cookie保存到==客户端的硬盘==上,到期后这个cookie就不能使用了,但是还是在cookie上,需要我们手动或则清理软件删除
    • expiry<0:Cookie==保存在浏览器内存中==存在,当用户关闭浏览器的时候,浏览器进程结束,Cookie也就死亡了
    • expiry=0,浏览器会马上删除这个Cookie

Cookie的path

  • 默认的path是当前资源所在的路径,比如访问day13下的AServlet,那么默认的路径就是/day13
    • Cookie的path并不是设置这个Cookie在客户端的保存路径
    • Cookie的path由服务器创建Cookie时设置
    • 当浏览器访问服务器时某个路径时,需要归还哪些Cookie給服务器呢?这个由Cookie的path决定
    • 浏览器访问服务器的路径如果包含某个Cookie的路径那么就归还这个Cookie
    • setPath(“/”)在服务器先所有的项目都可以获取这个cookie
    • 例如:
    • Cookie的path的默认值:当前访问路径的父目录,也就是当前访问的文件所在的目录
  • domain用来指定cookie二级域名,当多个二级域中共享Cookie是才有用
  • 例如:www.baidu.com, tiaba.baidu.com, yinyue.baidu.com
  • 设置domain的值 cookie.setDomain(“.baidu.com”)
  • 设置path为:cookie.setPath(“/”)

cookie的domain参数详解

  1. 在任何域名下,cookie的domain参数都只能指定为当前域名或上级域名(包括上级的上级,等等),此外都是无效的。
    如:在t.a.b.com下,指定domain为t.a.b.com、a.b.com、b.com都是可行的。
  2. 在domain的参数前,是否存在符号“.”是完全相同的。
    如:domain=a.b.com和domain=.a.b.com是完全相同的。
  3. 脚本只可访问domain参数设置为当前域名或上级域名(包括上级的上级,等等)的cookie,以及当前域名下设置的没有domain参数的
    cookie。
  4. 如果不指定domain,则cookie无法在其他任何域名下被访问,即使是子域名。
  5. 指定domain与不指定domain的cookie是不相同的,即使下面的情况所产生的cookie也是不同的:
    case1:在a.b.com下,设置无domain参数的cookie。
    case2:在a.b.com下,设置domain=a.b.com的cookie。
    case1和case2所生成的cookie是完全不同的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值