关于跨站Cookie及子域名共享、相关术语的技术疑问
一、子域名相关的Cookie共享问题
1. sub.A向B发起请求是否共享该Cookie?
会共享。B设置的Cookie存储在浏览器中并关联到B的域名,只要请求目标是B的域名,不管发起请求的页面是A还是sub.A(A的子域),浏览器都会自动携带该Cookie(除非Cookie设置了SameSite属性限制跨站点请求,但A和sub.A属于同站点,不受SameSite=Strict/Lax的限制)。
2. A向sub.B发起请求是否共享该Cookie?
取决于B设置Cookie时指定的Domain属性:
- 如果B设置Cookie时未指定Domain:默认仅对B的主域名生效,A向sub.B(B的子域)发起请求时不会携带该Cookie;
- 如果B设置Cookie时指定了Domain为B的主域名(比如B是
b.com,设置Domain=b.com):该Cookie会对B的主域名及其所有子域生效,A向sub.B发起请求时会携带该Cookie。
二、核心术语疑问解答
1. Cookie的传递流程
当A向B发起请求且B设置Cookie时,流程分为两步:
- 首先,B在响应请求的HTTP响应头中通过
Set-Cookie字段将Cookie发送给A的浏览器; - 之后,当A(或符合条件的页面)再次向B发起请求时,浏览器会在HTTP请求头的
Cookie字段中携带该Cookie发送给B。
2. “for”的含义与Cookie归属
这里的“for”指的是Cookie的关联域名——即该Cookie是为哪个域名设置的,浏览器只会向这个域名(或其允许的子域)发送请求时携带它。
示例中,Cookie属于B的域名:它由B的服务器生成并通过响应发送给浏览器,最终存储在浏览器中并与B的域名绑定,只有向B(或其允许的子域)发起请求时才会被携带。
内容的提问来源于stack exchange,提问作者Minh Nghĩa
相关产品推荐
相关产品推荐

