我在Heroku上有一个使用Devise的rails 3.2应用程序。
从昨天部署之后开始,session_id退出了在某些浏览器上的存储。
经过一场马拉松式的调试,我们发现我们的cookie是这样设置的:
Application.config.session_store :cookie_store, :domain => :all
这是发送一个域为.herokuapp.com
的设置cookie头,允许我们访问我们的开发、阶段等。
此代码已经使用了1年以上。昨天,在部署之后,出现了错误。
修复程序使用cookie域中的实际子域显式设置域:
Application.config.session_store :cookie_store, :domain => 'example.herokuapp.com'
虽然这"解决"了这个问题,但我不明白为什么这个cookie被一些浏览器忽视了,而其他浏览器却没有。它们都应该允许通配符子域cookie AFAIK。
请帮我理解这个问题。
2013年5月14日,herokuapp.com被添加到Mozilla基金会的公共后缀列表中。此列表用于多种浏览器(Firefox、Chrome、Opera),以限制cookie的作用域范围。
来源:https://devcenter.heroku.com/articles/cookies-and-herokuapp-com