正确使用cookie中的domain

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的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为浏览器cookie域名与服务器返回的cookie域名不匹配导致的。可能是因为你的网站使用多个子域名,而cookie的域名设置不正确,导致浏览器无法正确识别cookie。需要检查cookie的域名设置是否正确,并确保所有子域名都使用相同的cookie域名。 ### 回答2: “cookie 'domain' mismatch”指的是在浏览网站时出现的错误提示,其涉及到浏览器上的cookie机制和网站域名的概念。当我们访问某个网站时,网站会在我们的浏览器上存储一些cookie,以便下次访问时能够识别用户身份和记录用户偏好等信息。而每个cookie都有其所属的域名属性,指定了该cookie的作用域范围。例如,访问"www.example.com"域名的网站时,所存储的cookie的域名属性应该为“example.com”。 当出现“cookie 'domain' mismatch”错误提示时,通常是因为网站域名和cookie所属域名不匹配造成的。这可能是由以下几个原因造成的: 1. 浏览器设置问题:某些浏览器设置可能会禁用网站存储cookie或者限制cookie的作用域范围,从而导致出现该错误提示。 2. 网站跳转问题:当网站进行跳转操作时,如果域名发生了变化,那么之前存储的cookie可能无法正确识别,从而导致出现该错误提示。 3. 域名解析问题:有时候,由于DNS解析不准确或者域名绑定配置错误,浏览器可能无法正确解析网站域名,进而导致cookie 'domain' mismatch错误。 如果您遇到了cookie 'domain' mismatch错误提示,您可以尝试清除浏览器缓存并重新刷新网页,或者检查浏览器的cookie设置是否正确。如果问题依然存在,您可以尝试更换浏览器或者联系网站管理员进行排查和解决。 ### 回答3: cookie 'domain' mismatch是指浏览器无法设置带有指定域名的cookie,因为请求的域名与cookie的域名不匹配。这个问题通常会出现在跨域请求、子域名或者多个域名之间的会话。 当浏览器向服务器发送请求时,如果请求的域名与cookie的域名不匹配,那么服务器会拒绝设置该cookie,因为这可能是恶意站点试图窃取用户信息的攻击。因此,浏览器会报出“cookie 'domain' mismatch”的错误信息。 解决这个问题的方法很简单,只需要在设置cookie时确保指定的域名与请求的域名匹配即可。如果您正在使用JavaScript设置cookie,可以在代码指定cookie的域名,如下所示: document.cookie = "cookie_name=cookie_value; domain=example.com; path=/"; 在这个例子,我们将cookie的域名设置为example.com。当浏览器向example.com发送请求时,该cookie将被发送到服务器。 总的来说,cookie 'domain' mismatch是一个基本的网络安全问题,但是通过小心的编码和检查,可以很容易地避免这个问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值