Cookie之domain
本以为我对cookie这个小玩具已经很了解,
后来才发现,只是皮毛罢了,还需要继续学。
目录
问题一:
1. 顶级域名(.com/.cn/.org 等):解决 “资源分类” 问题
2. 二级域名(如doubao.com中的 “doubao”):解决 “实体标识” 问题
3. 三级及以上域名(如www.doubao.com中的 “www”):解决 “内部资源细分” 问题
4.拓展
问题二:
普通登入:
“记住我” 登入:
问题一:
cookie的域名(domain)设成.com,那是不是123.com的域名也能访问
答案是不行的。
因为.com是公共后缀。
Cookie 的域名不能直接设为 .com (浏览器会禁止),且不同二级域名(如123.com和456.com)的 Cookie 无法互通。
其实我是想借此引出以下知识点。
我是以www.doubao.com为例的:
域名片段 | 官方名称 | 层级定位 | 说明 |
---|---|---|---|
.com | 顶级域名(TLD) | 一级域名 | 属于 “通用顶级域名”(gTLD),是互联网的顶层分类之一(类似的还有 .cn 、.org 等),不是 “拓展域名”。 |
doubao | 二级域名(SLD) | 核心注册域名 | 这是在域名注册商(如阿里云、腾讯云)处实际注册的 “主体”,比如 “doubao.com” 是注册的完整基础域名,不是 “一级域名”。 |
www | 三级域名 | 子域名 | 是在 “doubao.com” 这个二级域名下,自行配置的子域名(用于指向网站的 “www 服务”),类似的子域名还可以是 blog.doubao.com 、api.doubao.com 等。 |
域名分级的根本目的起初是为了解决 “全球资源定位与管理” 问题
1. 顶级域名(.com/.cn/.org 等):解决 “资源分类” 问题
顶级域名(一级域名)是互联网的 “顶层分类标签”,核心作用是按 “类型” 或 “地域” 划分资源池,方便全球统一管理:
- 按类型分:
.com
(商业机构)、.org
(非营利组织)、.edu
(教育机构)、.gov
(政府机构)等; - 按地域分:
.cn
(中国)、.jp
(日本)、.uk
(英国)、.us
(美国)等。
比如用户看到.edu
就知道是教育网站,看到.cn
就知道是中国的网站,无需记住复杂的 IP 地址,降低认知和管理成本。
2. 二级域名(如doubao.com中的 “doubao”):解决 “实体标识” 问题
二级域名是企业 / 个人在 “顶级域名下” 注册的 “专属标识”,核心作用是唯一区分某个具体实体:
- 每个二级域名 + 顶级域名的组合(如
doubao.com
、taobao.com
)在全球是唯一的,相当于互联网上的 “门牌号码”; - 用户通过二级域名就能关联到具体品牌(比如看到 “doubao.com” 就知道是豆包相关服务),实现 “品牌与地址绑定”。
3. 三级及以上域名(如www.doubao.com中的 “www”):解决 “内部资源细分” 问题
三级域名(子域名)是注册者在 “二级域名下” 自行创建的,核心作用是对自身内部的资源 / 服务进行细分管理,无需额外向域名商注册,灵活度极高:
- 按 “功能模块” 分:
www.doubao.com
(官网首页)、api.doubao.com
(接口服务)、blog.doubao.com
(博客板块)、mail.doubao.com
(邮件服务); - 按 “业务线” 分:
user.doubao.com
(用户中心)、pay.doubao.com
(支付服务)、shop.doubao.com
(电商板块); - 按 “环境” 分:
test.doubao.com
(测试环境)、prod.doubao.com
(生产环境)。
这种细分让内部资源结构更清晰,也方便用户 / 系统快速定位到具体服务(比如调用接口就找api.xxx.com
,访问博客就找blog.xxx.com
)。
4.拓展
特殊情况
大家可以通过这一段代码分析具体情况
if net.ParseIP(host) != nil {// 情况1:IP地址访问c.SetCookie(name, value, maxAge, "/", "", false, true)
} else {// 情况2:域名访问 c.SetCookie(name, value, maxAge, "/", host, false, true)
}
两种情况对比:
访问方式 | host值 | domain参数 | 原因 |
IP地址 | 192.168.1.100 | "" (空字符串) | IP不能作为Cookie域名 |
域名 | myblog.com | "myblog.com" | 域名可以作为Cookie域名 |
微服务
微服务架构的核心是 “将一个大型应用拆分为多个独立的小服务”(如用户服务、订单服务、支付服务),而多级域名恰好能为这些独立服务提供 “清晰的访问入口”。
所以微服务也就可以借助域名分级的特性,更轻松的实现以上功能。
可惜现在还没真正的着手开发过一个微服务架构的项目,等我后面学习了,在补充一下。
问题二:
一般在登入的时候,点击记住我时,是记住了cookie吗?还是怎么的?
普通登入:
服务器通常会生成一个短期有效的令牌
“记住我” 登入:
当用户勾选 “记住我” 时,服务器会生成一个长期有效的认证凭证,cookie的过期时间会设置的远些。
如图: