会话cookie的奇怪行为

时间:2017-03-20 23:14:18

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

我在Heroku上托管了一个Rails应用程序,我准备部署另一个将使用相同会话cookie的应用程序。假设主应用程序托管在app.mycompany.com,新应用程序将托管在reports.mycompany.com。我在两个带有cookie域.mycompany.com的应用程序中设置了会话cookie,一切正常。我已修改/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。

有人能指出我正确的方向吗?或许我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:1)

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

  

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