
本以为我对cookie这个小玩具已经很了解, 后来才发现,只是皮毛罢了,还需要继续学。
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 等。  | 
域名分级的根本目的起初是为了解决 “全球资源定位与管理” 问题
顶级域名(一级域名)是互联网的 “顶层分类标签”,核心作用是按 “类型” 或 “地域” 划分资源池,方便全球统一管理:
.com(商业机构)、.org(非营利组织)、.edu(教育机构)、.gov(政府机构)等;.cn(中国)、.jp(日本)、.uk(英国)、.us(美国)等。比如用户看到.edu就知道是教育网站,看到.cn就知道是中国的网站,无需记住复杂的 IP 地址,降低认知和管理成本。
二级域名是企业 / 个人在 “顶级域名下” 注册的 “专属标识”,核心作用是唯一区分某个具体实体:
doubao.com、taobao.com)在全球是唯一的,相当于互联网上的 “门牌号码”;三级域名(子域名)是注册者在 “二级域名下” 自行创建的,核心作用是对自身内部的资源 / 服务进行细分管理,无需额外向域名商注册,灵活度极高:
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)。
特殊情况
大家可以通过这一段代码分析具体情况
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的过期时间会设置的远些。
如图:
