cookie
// cookie是会话技术,保存在客户端(电脑磁盘里面),默认时间是一次会话
// 可以通过setMaxAge进行时间设置
// 可以通过setPath设置路径,setDomain设置父域名(域名比他短),通过response.addCookie进行保存cookie
session :
// session是会话技术,保存在服务端
// session的实现依赖于cookie
// 通过request.getSession(),会生成一个jsessionId的cookie,默认保存时间是一次会话(浏览器关闭就是一次会话)。
// 每次浏览器请求的时候都会带上这个jessionId,用来识别请求用户
// session默认保存时间是30分钟,时间(分钟)可以在三个地方配置
// 1. tomcat中的conf/web.xml
// 2. 项目的web.xml
// 3. session.setMaxInactiveInterval
// 当关闭tomcat的时候,session会失效。
// 当关闭浏览器的时候,session不会失效,但是cookie默认是一次会话,所以jsessionId会失效。
domain:
域名A: ccssdd.zicp.vip
域名B: zicp.vip
B为A的上一级域名,也就是父亲,或者说叫爸爸。
1. 当通过A域名去添加一个名称为k,内容为v的cookie, setDomain为zicp.vip或 .zicp.vip(带点和不带点两个效果是
一样的,最终在zicp.vip这个域名下k1的域名都是 .zicp.vip ,如果你直接通过域名B去添加一个key,且生成的这个key
所属域名没有带点,那么这个key是私有的,子域名不能访问),那么在zicp.vip这 个域名下有一个key为k的cookie,域
名A也可以获取这个值。那么当删除的时候,domain也要指定为 .zicp.vip
2. setDomain为空的时候,只会在域名A下有这个key
3. setDomain为ccssdd.zicp.vip的时候,会在ccssdd.zicp.vip这个域名下生成域名带点的名称(名称:k2),如图
4. setDomain为ccssdd.zicp.vip的时候,会在ccssdd.zicp.vip这个域名下生成域名带点的名称(名称:k1,内容为v11)
那么这个时候会有两个名称为k1的cookie,一个在上一级域名一个在自身域名,那么通过request.getCookies()去获
取的时候,会获取两个为k1的cookie,如图([0],[2])。
5. 如果在域名A下想要删除域名B下的cookie,那么需要指定domain为`.zicp.vip`(必须带点,因为只有带点的cookie,
子域名才有权利来进行访问),没有带点的是其私有的(可以通过浏览器cookie查看那些是其私有)。
总结
1. request请求的时候,会把所有的cookie带上
2. 父域名(zicp.vip)是没有权利来访问子域名的cookie。
3. 子域名只能访问父域名带点的cookie
4. 删除域名的时候,如果这个cookie的域名带点,那么也要指定domain。可以存在名称一样的cookie(域名区分带点与不带点)
5. 只有path、domain、cookie的名称一致,才能被视为同一个cookie。
6. cookie默认保存的path是项目名称,如:/app,/gts。