博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie使用
阅读量:5914 次
发布时间:2019-06-19

本文共 2853 字,大约阅读时间需要 9 分钟。

cookie介绍

cookie是浏览器保存在用户计算机上的少量数据,他与特定的WEB页或者WEB站点进行关联起来,自动地在WEB浏览器与WEB服务器之间传递

浏览器会将domain和path都相同的cookie保存在一个文件里,cookie间用*隔开。

  • Path-路径  ---在某个域名下的cookie保存目录

        如果在建立一个cookie,那么就在这个目录里就创建了一个cookie。

假设cookie的路径如下

/

/test

/test/test2

/test345

/test555/test666

注意事项:

  1. 相同键名的Cookie可以存在于不同的路径下,如果同一个目录下键名相同新建的会覆盖之前的
  2. 删除时,若果当前路径下没有键为key的cookie,则查询全部的父路径,检索到就执行删除操作(每次只能删除一个与自己最近的父路径cookie)

        a . 必须指定与设定cookie时使用的相同的路径来删除cookie,而且cookie的键名不论大写,小写或大小混合都要指定路径

        b . 键名为小写的时候,如果当前的路径为/test/test2,如果找不到再向上查询/test,/test555,/test345,如果还找不到就查询/。(/test555/test666不查询)

             键名大小写混写或者大写的时候,不指定路径默认删除当前路径,并且不向上查询

  1. 读取cookie的时候只能读取直接父类的cookie
  2. 再做java的web项目的时候,由于一般的Web服务器(如tomcat或者jetty)都用Context来管理不同的WebApplication,这样队友每个Context都有不同的path,在一个Server中有多个Web Application时要特别小心,不要设置Path为/的Cookie,容易误操作(当然前提是域名相同 )
  • Domain-域

指定关联的WEB服务器或者域。值是域名,比如baidu.com.,这是对path路径属性的一个延伸。如果我们想mp3.baidu.com能够访问test.baidu.com设置cookie。我们可以将domain的属性设置成“baidu.com”,这样mp3.baidu.com与test.baidu.com就都能访问到了。如果要在mp3.baidu.com创建一个mp3.baidu.com不能访问只有test.baidu.com能访问的cookie,那么就要将cookie的domin属性设置成”test.baidu.com”

注意:不能把cookie域属性设置成与设置它的服务器所在域不同的值。

  • Secure-安全

指定cookie的值通过网络如何在用户与WEB服务器之间进行传递。这个属性的值字在浏览器中或许为”secure”获取为空(在java中用true,false设置,默认为false)。在缺省状态下,该属性为空,也就是使用不安全的http协议进行传递数据。如果cookie标记为secure,那么,他与WEB服务器之间就通过https或者其他安全协议传递数据。不过设置了secure属性其他人还是能在本地看到你机器本地保存的cookie。也就是说:cookie设置secure。只保证cookie与WEB服务器之间数据传输过程中进行加密,而保存在本地的cookie不加密。如果想让本地cookie也加密,得自己加密数据。

  • Expires-过期时间

指定cookie的生命期。具体的值是指过期时间。默认关闭浏览器即过期,如果想要保存更长的时间就要设置日期,当过了到期日期,浏览器会删除cookie文件。现在已经被max-age属性所取代,max-age用秒来设置cookie生存期

java中操作cookie

  1. 设置cookie
Cookie cookie = new Cookie("key", "value");cookie.setMaxAge(60);//设置生存期秒为单位。设置为负值的话,关闭浏览器就失效cookie.setPath("/test/test2");//设置cookie路径。不设置的话,默认当前路径;为了让所有项目都访问到可以设置成cookie.setPath("/");response.addCookie(cookie);

   2.   读取cookie

private String getCookieValue(HttpServletRequest request, String name) {        Cookie[] cookies = request.getCookies();        String cookieValue = null;        String cookieName = "";        if (cookies != null && cookies.length > 0) {            for (Cookie cookie : cookies) {                cookieName = cookie.getName();                if (name.equals(cookieName)) {                    cookieValue = cookie.getValue();                    cookieValue = URLDecoder.decode(cookieValue);                    break;                }            }        }        return cookieValue;    }

    3.    删除cookie

Cookie cookie = new Cookie("key", null);cookie.setMaxAge(0); //设置为0为立即删除该Cookiecookie.setPath("/test/test2"); //删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookieresponse.addCookie(cookie);

    4.    修改cookie

Cookie cookie = new Cookie("key", "newvalue");cookie.setMaxAge(60);//设置生存期秒为单位。设置为负值的话,关闭浏览器就失效cookie.setPath("/test/test2");//设置cookie路径。不设置的话,默认当前路径response.addCookie(cookie);
当域相同,path相同,key相同的时候,重新创建cookie默认将原来的值value覆盖为新的newvalue

转载于:https://www.cnblogs.com/dashuai01/p/5110950.html

你可能感兴趣的文章
谈一次异步上传到又拍云的案例教程
查看>>
【Ubuntu】IBM资料学习笔记
查看>>
C#接收命令行参数的代码
查看>>
xcode svn的操作(1)
查看>>
判断ip的有效性---boost
查看>>
android activity之间传递对象
查看>>
最全Handler源码解剖
查看>>
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
查看>>
大流量、高负载场景 Nginx+Linux 性能调优
查看>>
华为发布全球首款Android 3.2平板电脑
查看>>
java对象拷贝
查看>>
LAMP_配置静态文件缓存
查看>>
Java 的基本数据类型
查看>>
网站页面性能优化的34条黄金守则(网上到处都有了,还是要转一下)
查看>>
无法在模块路径中找到主题引擎:“murrine”
查看>>
[转]jetbrains系产品字体设置技巧
查看>>
selenium3打不开火狐浏览器的解决方法
查看>>
C#forUnity快速入门(连载13)-C#结构体
查看>>
我的友情链接
查看>>
Ubuntu添加永久DNS配置
查看>>