我们有多个跨多个子域的 Web 应用程序,app1.company.com、app2.company.com。此外,我们还有多个环境、prod、staging、dev1、dev2
每个环境的所有服务都在应用程序名称末尾使用 -ENV 来将其与其他环境区分开来。例如
这不会是一个问题,除非我们想要从一个环境中开始共享 cookie。这意味着 cookie 的域必须设置为 .company.com。这会破坏我们的沙箱。另一种方法是在 cookie 名称前面加上环境前缀,但这看起来也像是一种拼凑,并且不能提供真正的安全性。
所以问题是人们如何设置他们的生产、登台和开发环境,以便 cookie 相互沙箱化。
使用不同的域。您已经正确地指出,将 cookie 域设置为“company.com”会在所有域(而不仅仅是某些域)上共享它们。
您可以更改代码以在不同环境中设置/侦听不同的 cookie,但如果您的请求中存在大量虚假 cookie,这仍然可能使调试/诊断变得困难。
因此使用不同的域,例如:
app1.company.com cookiedomain=.company.com
app2.company.com
app1.staging-company.com cookiedomain=.staging-company.com
app2.staging-company.com
app1.dev-company.com cookiedomain=.dev-company.com
app2.dev-company.com
设置额外的域很容易,您可能需要支付额外的 SSL 证书费用,但通常不会很大。这 '。'在 cookie 中设置的域很重要之前。
我找不到任何可行的解决方案。然而,为每个 cookie 指定不同的名称似乎是可行的。
如果您有用户令牌,那么在读取 cookie 时将其存储为 user-staging、user-prod 会起作用,但是,在多个位置处理多个 cookie 会很烦人。