环境之间的沙盒Cookie



我有一个生产环境和一个暂存环境。我想知道我是否可以在环境之间沙箱cookie。我的设置看起来像

生产

  • domain.com-前端SPA
  • api.domain.com-后端节点

暂存

  • staging.domain.com-前端SPA
  • api.staging.domain.com-后端节点

我的暂存cookie使用域.staging.domain.com,所以那里一切都很好。但是我的生产cookie使用域.domain.com,所以这些cookie会显示在暂存环境中。

我读过一个可能的解决方案是使用一个单独的域进行暂存,比如staging-domain.com,但如果可能的话,我希望避免这种情况。是否有其他解决方案,或者我是否遗漏了cookie的工作原理?

有多种选择:

  1. 将您的生产域设置为www.domain.com和api.www.domain.com,并将您的cookie设置为。www.domain.com

这样,您的生产cookie就不会出现在暂存环境中。

  1. 使用.domain.com,但后端的行为会因接收cookie的环境而异

一个解决方案是更改暂存环境中用于加密cookie的密码短语。

这样做将使来自生产的cookie无效。

这样做的方法依赖于web服务器,例如在Apache HTTP服务器上:

http://httpd.apache.org/docs/current/mod/mod_session_crypto.html

来自以上链接的文本:

SessionCryptoPassphrase secret

会话将使用给定的密钥进行加密。通过确保在每个服务器上使用相同的加密密钥,可以将不同的服务器配置为共享会话。

如果加密密钥发生更改,会话将自动失效。


因此,请了解如何在暂存环境中更改web服务器上的密码短语,来自生产的所有cookie以及来自暂存的所有cookie(过去发布的(在暂存时都将被视为无效。

如果您不想使用单独的域或www子域,您可以将暂存环境名称附加到cookie名称中。

但就我个人而言,我会在后端和spa之前放置一个API网关/代理,以将这两个服务保持在一个域(domain.comdomain.com/api(下。

对于暂存:staging.domain.comstaging.domain.com/api或完全独立的域,以避免在SSL证书中暴露暂存地址。

我不允许在设置cookie时省略domain来共享cookie。可能,我会将cookie路径设置为/api

最新更新