2017-03-20 28 views
0

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

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

当指向mycompany-staging.herokuapp.com127.0.0.1时,我的本地计算机上发生同样的事情。只有当我使用herokuapp.com时才会发生这种情况。一切工作正常或至少有几个不同的领域工作正常,包括herokuapp2.com

我真的很困惑。看起来有一些缓存问题,但我不知道究竟在哪里。我主要在Chrome上进行无痕模式测试,但我也尝试过使用Safari来解决相同的问题。

任何人都可以指向正确的方向吗?或者也许我错过了一些明显的东西。

回答

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中设置,但不应该依赖此行为,并且以后可能会更改。