在开发环境中。 Twitter API要求我们从0.0.0.0而不是localhost或任何其他主机名登录。
但是,我们也通过子域测试我们的本地应用程序。在session_store.rb
:
Foobar::Application.config.session_store :redis_store, :servers => REDISTOGO_URL, :key_prefix => "foobar:rails:session", :expire_in => 1.week, :domain => '.localhost.dev'
每次我们尝试登录Twitter时,都会得到401 Unauthorized
。如果我们设置:domain => '0.0.0.0'
,我可以登录到Twitter。具有:
Foobar::Application.config.session_store :redis_store, :servers => REDISTOGO_URL, :key_prefix => "foobar:rails:session", :expire_in => 1.week
如果没有:domain =>
部分,我可以毫无问题地登录Twitter。
为什么在:domain
中设置session_store.rb
会干扰Twitter登录?
答案 0 :(得分:0)
会话存储集上的:domain
选项是将为其颁发会话ID cookie的域。当cookie的域设置和当前url的主机名匹配时,浏览器只会将cookie发送回应用程序。
在您的设置中设置:domain => '.localhost.dev'
意味着您必须使用http://localhost.dev
访问您的网站,或者它的子域(http://www.localhost.dev
)也可以。通过http://0.0.0.0
访问您的应用程序时,由于主机名不匹配,您将无法取得任何成功。