允许从不同来源的子域使用 cookie
Allow cookies to be used from different origin subdomain
如果我浏览器地址栏上的 url 是 dev.example.com
并且如果我向 sub1.dev.example.com
发出请求,它会使用具有以下属性的 set-cookie 进行响应:
- httpOnly
- 安全
- 无同站点属性(默认为松散)
- 域=dev.example.com
虽然仍在 dev.example.com
,但如果我调用 sub2.dev.example.com
,cookie 会在请求中发送,这正是我所期望的。
但是,如果我浏览器地址栏上的 url 是 sub3.dev.example.com
而我调用 sub2.dev.example.com
,则不会发送 cookie。
(在 chrome 92 和 firefox 90 上验证)
有没有什么方法可以在源 sub3.dev.example.com
上向 sub2.dev.example.com
发送 cookie,其中特定 cookie 是在 sub1.dev.example.com
的请求响应中设置的,而在源 dev.example.com
?
或者甚至更好,允许将 cookie 发送到 **.dev.example.com
的所有子域,同时在 **.dev.example.com
的任何原始子域上独立于最初请求或设置 cookie 的来源。
经过更多测试,我似乎忘记在我的请求中添加“withCredentials”标志。
对于偶然发现此问题的任何人,如果您使用的是 axios,请确保在调用时将“withCredentials”设置为 true,如果您使用的是 fetch,请确保将“credentials: 'include'”设置为 true。
如果我浏览器地址栏上的 url 是 dev.example.com
并且如果我向 sub1.dev.example.com
发出请求,它会使用具有以下属性的 set-cookie 进行响应:
- httpOnly
- 安全
- 无同站点属性(默认为松散)
- 域=dev.example.com
虽然仍在 dev.example.com
,但如果我调用 sub2.dev.example.com
,cookie 会在请求中发送,这正是我所期望的。
但是,如果我浏览器地址栏上的 url 是 sub3.dev.example.com
而我调用 sub2.dev.example.com
,则不会发送 cookie。
(在 chrome 92 和 firefox 90 上验证)
有没有什么方法可以在源 sub3.dev.example.com
上向 sub2.dev.example.com
发送 cookie,其中特定 cookie 是在 sub1.dev.example.com
的请求响应中设置的,而在源 dev.example.com
?
或者甚至更好,允许将 cookie 发送到 **.dev.example.com
的所有子域,同时在 **.dev.example.com
的任何原始子域上独立于最初请求或设置 cookie 的来源。
经过更多测试,我似乎忘记在我的请求中添加“withCredentials”标志。
对于偶然发现此问题的任何人,如果您使用的是 axios,请确保在调用时将“withCredentials”设置为 true,如果您使用的是 fetch,请确保将“credentials: 'include'”设置为 true。