深入理解Cookie作用机制

1.回顾

对于Cookie的基本知识即什么是Cookie可以看一下:

这篇文章,都有详细介绍

2.Cookie跨域问题

2.1跨域问题的引出

在做分布式项目的时候,不同的功能模块分布在不同的服务器中,通过一个地址去访问另一个地址,只要访问协议,ip地址,端口号三者中的一个地方不同,都会出现跨域问题

2.2Cookie的域名

Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。正常情况下,同一个一级域名下的两个二级域名如www.helloweenvsfei.com和images.helloweenvsfei.com也不能交互使用Cookie,因为二者的域名并不严格相同。(一级域名与二级域名的区别)如果想所有helloweenvsfei.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数:

  • 比如:cookie.setDomain(".helloweenvsfei.com"); // 设置域名

在使用domain参数设置cookie的跨域访问时需要注意:

  • domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.aspx,那么domain默认为www.test.com。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com。
  • domain参数必须以点(".")开始,即在同一个一级域名下都可以实现cookie共享
    在这里插入图片描述
  • domain属性决定运行访问Cookie的域名

2.3Cookie的路径

path属性决定允许访问Cookie的路径(即虚拟路径,或者我们web应用的名称,通过request.getContextPath获取),例如,如果只允许/sessionWeb/下的程序使用Cookie,可以这么写:

  • cookie.setPath("/sessionWeb/");

设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾,使用path属性需要注意:

  • 页面只能获取它属于的Path的Cookie,例如/session/test/a.jsp不能获取到路径为/session/abc/的Cookie
  • path表示cookie所在的目录,默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。这是因为cookie只能让其path路径下的页面访问。

2.4Cookie的安全属性

HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输很机密的内容是一种隐患。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。下面的代码设置secure属性为true:

  • cookie.setSecure(true);

参考链接:
https://www.cnblogs.com/andy-zhou/p/5360107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值