【问题标题】:Sandbox Cookies between environments环境之间的沙盒 Cookie
【发布时间】:2020-08-23 05:46:41
【问题描述】:

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

【问题讨论】:

  • 似乎是duplicate。或者,您可以查看修补您的 hosts 文件,以便在两种环境中重用一个域(可能仅适用于测试场景)
  • @timur 我看到了那个,我认为最佳答案是我的一个环境,但不是两者都在一起。谢谢你的链接

标签: cookies


【解决方案1】:

有多种选择:

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

这样,您的生产 cookie 将不会在暂存环境中看到。

  1. 使用 .domain.com ,但让您的后端根据接收 cookie 的环境有所不同。

【讨论】:

    【解决方案2】:

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

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

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

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

    以上链接的文字:

    SessionCryptoPassphrase secret
    

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

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


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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-03-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        • 1970-01-01
        • 2013-05-03
        相关资源
        最近更新 更多