【问题标题】:Weird behavior with session cookies会话 cookie 的奇怪行为
【发布时间】:2017-08-12 10:38:24
【问题描述】:

我在 Heroku 上托管了一个 Rails 应用程序,我正准备部署另一个使用相同会话 cookie 的应用程序。假设主应用程序托管在app.mycompany.com,而新应用程序将托管在reports.mycompany.com。我已经在两个应用程序中设置了会话 cookie,cookie 域为.mycompany.com,一切正常。我已修改 /etc/hosts 以在我的本地计算机上测试这些设置。

由于在我的本地机器上一切正常,我想在托管在mycompany-staging.herokuapp.com 的暂存环境中对其进行测试。对于这个应用程序,我将 cookie 域设置为 .herokuapp.com。现在它不起作用。无法登录。从检查器看来,正确的 Set-Cookie 标头是从服务器发送的,但浏览器从不根据请求发回此 cookie。

mycompany-staging.herokuapp.com 指向127.0.0.1 时,我的本地计算机上也会发生同样的事情。仅当我使用herokuapp.com 时才会发生这种情况。其他一切都可以正常工作,或者至少有几个不同的域可以正常工作,包括herokuapp2.com

我真的很困惑。看起来有一些缓存问题,但我不知道具体在哪里。我主要在具有隐身模式的 Chrome 上对此进行测试,但我也尝试过 Safari,但遇到了同样的问题。

谁能指出我正确的方向?或者我可能遗漏了一些明显的东西。

【问题讨论】:

    标签: ruby-on-rails http session heroku cookies


    【解决方案1】:

    这是因为 herokuapp.com 包含在 Mozilla 基金会的 Public Suffix List 中。无法再设置域为 *.herokuapp.com 的 Cookie。参考 devcenter.heroku.com 中的doc

    herokuapp.com 包含在 Mozilla 基金会的公共后缀列表中。该列表用于多个浏览器的最新版本,例如 Firefox、Chrome 和 Opera,以限制 cookie 的范围。换句话说,在支持该功能的浏览器中,herokuapp.com 域中的应用程序无法为 *.herokuapp.com 设置 cookie。请注意,*.herokuapp.com cookie 目前可以在 Internet Explorer 中设置,但不应依赖此行为,并且将来可能会更改。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      相关资源
      最近更新 更多