是否可以从一个子域为另一个同根子域设置HttpOnly Cookie?
结论
部署在api.domain.com的API接口可以为同根下的其他子域设置HttpOnly Cookie,你遇到的设置失败问题是配置不符合规范导致的,核心规则和配置要求如下:
- HttpOnly标记仅用于限制JavaScript对Cookie的读写权限,不会改变Cookie本身的跨域/跨子域设置规则,跨子域设置HttpOnly Cookie的逻辑和普通Cookie完全一致。
- 要让
api.domain.com设置的Cookie能在app.domain.com下生效,需要在服务端返回的Set-Cookie响应头中显式指定Domain属性为父域:Domain=domain.com,该配置下Cookie会对所有domain.com的子域生效。如果不指定Domain属性,Cookie默认仅绑定到设置它的精确域名api.domain.com,自然不会在app.domain.com下被识别和携带。 - 由于是跨子域发起的请求,前端axios调用时必须开启
withCredentials: true配置,否则浏览器会默认拒绝接收跨域响应返回的Cookie。 - 后端CORS配置需要满足两个要求:明确将
https://app.domain.com加入允许的请求源列表,同时设置Access-Control-Allow-Credentials: true,不能用通配符*作为允许的请求源,否则跨域携带Cookie的请求会被浏览器拦截。
规范依据
上述规则由Cookie标准RFC 6265明确规定,所有现代浏览器都遵循该标准实现Cookie逻辑。
内容的提问来源于stack exchange,提问作者briancaffey
相关产品推荐
相关产品推荐

