cookie的domin path

89 阅读2分钟

domain属性

作用

定义 Cookie 的有效域名,浏览器仅在请求该域名或其子域名时发送 Cookie。

语法

http

Set-Cookie: cookieName=cookieValue; Domain=example.com

规则

  • 默认值:若未指定Domain,Cookie 仅在当前域名下有效。
  • 子域名继承:设置Domain=example.com后,所有子域名(如www.example.commail.example.com)均可访问该 Cookie。
  • 跨域限制:不能设置为其他网站的域名(如Domain=google.com无效)。

典型场景

  • 多子域名共享用户信息:如主站example.com和子站blog.example.com共享用户登录状态。
  • 单点登录(SSO) :多个子系统通过相同Domain的 Cookie 实现统一认证。

2. path属性

作用

定义 Cookie 的有效 URL 路径,浏览器仅在请求路径匹配时发送 Cookie。

语法

http

Set-Cookie: cookieName=cookieValue; Path=/admin

规则

  • 路径匹配:路径需完全匹配或为父路径。例如,Path=/admin时,/admin/admin/settings路径会携带 Cookie,但/user路径不会。
  • 默认值:若未指定Path,默认使用当前页面的路径。
  • 路径优先级:同名 Cookie 中,路径更具体的优先级更高。

典型场景

  • 限制管理后台 Cookie:将管理后台的敏感 Cookie 设置为Path=/admin,避免普通页面泄露。
  • 分离功能模块:不同业务模块(如/api/web)使用独立的 Cookie 路径。

3. 组合使用

示例配置有效范围
Domain=example.com; Path=/所有子域名的所有路径
Domain=example.com; Path=/pay*.example.com/pay及子路径
Domain=www.example.com; Path=/www.example.com的所有路径

4. 注意事项

  • 安全性:避免设置过大的DomainPath(如Domain=.com),防止 Cookie 被其他网站滥用。
  • 跨域问题:若前端与后端部署在不同子域名,需通过Domain配置共享 Cookie。
  • SameSite的协同SameSite控制跨站请求是否携带 Cookie,而domainpath控制同一站的不同子域名 / 路径的可见性。

5. 最佳实践

  1. 最小化作用域:仅将 Cookie 暴露给必要的域名和路径。

  2. 敏感 Cookie 的隔离:如管理后台的 Cookie 设置Path=/admin,并配合SecureHttpOnly

  3. 跨子域名共享:通过Domain配置实现单点登录,但需谨慎评估风险。