0

在开发环境中。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。

为什么设置:domaininsession_store.rb会干扰 Twitter 登录?

4

1 回答 1

0

会话存储集上的:domain选项是将为其发出会话 id cookie 的域。只有当 cookie 的域设置和当前 url 的主机名匹配时,浏览器才会将 cookie 发送回应用程序。

:domain => '.localhost.dev'您的示例中进行设置意味着您必须使用http://localhost.devor 访问您的站点,并且它的子域 ( http://www.localhost.dev) 也可以。http://0.0.0.0由于主机名不匹配,您在访问应用程序时不会成功。

于 2013-01-18T15:32:24.137 回答