我在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。
有人能指出我正确的方向吗?或许我错过了一些明显的东西。
答案 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中设置,但不应依赖此行为,并且将来可能会更改。