如何将域中的 cookie 设置为子域 应该怎么做前端/后端/子域网关才能使这项工作正常进行?从前端角度:从后端角度API:

问题描述

这是一个协议问题 - 与特定的编程语言无关。

假设我们目前有:

  • 使用域名的网站:example.com
  • 前端应用位于:example.com/example-front
  • API 位于:example.com/api/example-data
  • 使用 HTTPS 的所有地址。
  • 前端应用调用 API 进行登录获取 set-cookie: data=SOME_DATA; Secure; httpOnly; Path=/; Domain=example.com 并按预期工作。
  1. 我们想将前端应用从 example.com/example-front 转移到 front.example.com
  2. API 将保持在同一地址。

应该怎么做(前端/后端/子域网关)才能使这项工作正常进行?

(已经尝试设置 domain=.example.comsameSite=None)。

解决方法

在检查了所有需要做的事情并在生产中也进行了验证后,解决此问题的步骤是:

从前端角度:

  • 如果您使用的是 axios / XHR - 添加 withCredentials: true
  • 如果您使用 fetch - 添加凭据:true

从后端角度(API):

  1. 添加标题:“access-control-allow-origin:[指定具体的子域,包括协议。例如:https://sub.example.com]”
  2. 添加“access-control-allow-credentials: true”
  3. 在“set-cookie”标头处,您应该提及:“httpOnly;安全的;域=example.com; sameSite=None;”