正确使用cookie中的domain

本文详细解析了域名和子域名之间的Cookie交互规则,包括如何设置Cookie的Domain属性,以及不同域名下Cookie的可见性和覆盖情况。重点讨论了单点登录的实现原理,同一域名下多个相同名称Cookie的处理方式,以及默认情况下浏览器如何处理未显式设置Domain的Cookie。通过对这些概念的深入理解,有助于提升Web应用的安全性和功能性。
摘要由CSDN通过智能技术生成

domain的含义为域

假设有两个域名

a.b.e.f.com.cn   以下用域名1指代此域名

c.d.e.f.com.cn   以下用域名2指代此域名

在域名中,所有域名进行分级,也就是说域名1与域名2都是f.com.cn的子域名,f.com.cn又是com.cn的子域名

在域名1所使用的服务中,可以设置域名

a.b.e.f.com.cn

b.e.f.com.cn

e.f.com.cn

f.com.cn

在服务端设置domain的时候,设置domain为b.e.f.com.cn或.b.e.f.com.cn没有区别,注意前面的点,即只要是为cookie显示的声明domain,前面带不带点没有区别。这个点的奥妙后面还会提到。

设置其他域名虽然可以在响应头中有set-cookie的头,但是出于安全考虑,该头会被浏览器忽略,并不会产生真实的cookie,有一点注意,虽然在域名上来说,f.com.cn是com.cn的子域,但是浏览器是不会接收domain为com.cn的cookie的,那样互联网就乱套了。

对于域名1下的cookie,域名2可以拿到e.f.com.cn,f.com.cn这两个domain下的cookie,互联网上说的单点登录,就是以这个原理实现的。

如果存在相同名的cookie不同domain呢?

比如域名1设置domain为e.f.com.cn的cookie,mykey=myvalue1.

而在域名二中设置domain为c.d.e.f.com.cn的cookie,mykey=myvalue2.

此时在域名2服务端能拿到两个cookie都为mykey=myvalue,并不存在覆盖一说。

注意在域名2中如果设置domain为e.f.com.cn的cookie,mykey=myvalue3,此时会覆盖域为e.f.com.cn的mykey的值,即浏览器中,同一个域,只存在一个名为mykey的cookie。

如果不显式设置cookie,默认当前域名这种说法对不对呢?

先说第一个问题,如果不显式设置cookie,那么浏览器会生成一个只针对当前域名的cookie,什么叫只针对当前域名呢?

如果有一个域名就是e.f.com.cn,在该域名下设置的cookie如果没有显示domain,在回写浏览器的时候浏览器会特殊处理,如果是火狐,你会发现该cookie的信息,有一个主机项,而域项消失了,在chrome中,虽然有域这个项,但是域的前面少了一个点,就是上面所说的,如果显式声明,不管域中带不带点,到chrome中,都是带点存储的,只有非显式声明域的cookie,浏览器存储才是不带点的,问题就在这,在e.f.com.cn服务主机中生成的cookie,只有e.f.com.cn的服务器能拿到,此时子域名是拿不到这个cookie的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值