在处理 Cookie 时,域名的范围是一个重要的因素。Cookie 可以被设置为特定的域或者子域,并且它们的作用范围会影响到哪个 Cookie 会在特定的请求中被发送。
假设有两个 Cookie:
cookie1
设置在二级域名example.com
cookie1
设置在三级域名sub.example.com
当你在 sub.example.com
访问 cookie1
时,浏览器会发送两个 Cookie(如果它们都没有过期且路径匹配):
cookie1
来自二级域名example.com
cookie1
来自三级域名sub.example.com
在这种情况下,浏览器会优先使用更具体的域名的 Cookie,也就是三级域名的 cookie1
。因此,在 sub.example.com
上访问 cookie1
时,会得到三级域名 sub.example.com
设置的值。
简而言之,在 sub.example.com
访问 cookie1
时,会得到三级域名的 cookie1
的值。
示例代码
假设你在 example.com
设置了一个 Cookie:
document.cookie = "cookie1=value_from_example_com; domain=example.com";
然后在 sub.example.com
设置了另一个 Cookie:
document.cookie = "cookie1=value_from_sub_example_com; domain=sub.example.com";
在 sub.example.com
页面上读取 cookie1
:
console.log(document.cookie);
输出将会包含 cookie1=value_from_sub_example_com
,因为三级域名的 Cookie 优先级更高。
注意事项
- 如果两个 Cookie 的域和路径完全相同,但值不同,浏览器可能会选择其中一个(通常是最后设置的那个)。
- 为了避免这种冲突,建议在设置 Cookie 时使用不同的名称或路径。