环境之间的沙盒Cookie

时间:2020-08-13 18:40:01

标签: cookies

我有一个生产环境和一个暂存环境。我想知道是否可以在环境之间沙盒化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工作方式的信息?

3 个答案:

答案 0 :(得分:5)

有多种选择:

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

这样,您的生产Cookie不会在登台环境中显示。

  1. 使用.domain.com,但后端会根据接收Cookie的环境而有所不同。

答案 1 :(得分:0)

一种解决方案是更改登台环境中使用的密码来加密cookie。

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

这样做的方法取决于Web服务器,例如在Apache HTTP服务器上:

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

链接上方的文本:

SessionCryptoPassphrase secret

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

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


因此,请找出如何在登台环境中更改Web服务器上的密码短语,并将所有来自生产环境的cookie以及登台中的所有cookie(过去发行的cookie)在登台时均视为无效。

答案 2 :(得分:0)

如果您不想使用单独的域或www子域,则可以选择:您可以将临时环境名称附加到cookie名称上。

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

对于分段:staging.domain.comstaging.domain.com/api或完全独立的域,以避免在SSL证书中公开分段地址。

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