代码之家  ›  专栏  ›  技术社区  ›  Ariejan

rails 3,没有本地会话cookie与:domain=>:all

  •  4
  • Ariejan  · 技术社区  · 14 年前

    我有一个使用子域的Rails3应用程序。为了允许登录等跨所有子域工作,我在 config/initializers/session_store.rb

    MyApp::Application.config.session_store :cookie_store, :key => '_myapp_session', :domain => :all
    

    当我将我的应用程序部署到Heroku时,这非常有效。我可以跨子域登录并保持登录状态。

    然而,当在本地开发时,这确实是 工作。

    我的浏览器没有正确设置会话cookie:

    $ curl http://test.lhs.com/users/sign_in
    ...
    Set-Cookie: _myapp_session=BAh...3ed; domain=.lhs.com; path=/; HttpOnly
    ...
    

    但是,我的浏览器(我尝试了Safari、Firefox和Chrome)没有设置这个cookie。所以,当我登录时 InvalidAuthenticityToken 错误。

    我试过把 :domain => :all 部分,它正确设置了会话cookie,但仅限于当前子域。像这样设置 :domain => '.lhs.com' 也确实 把饼干放好。

    我在这里不知所措。为什么这在Heroku的生产中有效,但在本地无效。我甚至尝试过不同的服务器(Webrick rails server 乘客独立)。我还尝试在80端口而不是3000端口上本地运行,但这也没什么区别。

    有没有线索表明会话cookie不是本地设置的?谢谢!

    4 回复  |  直到 12 年前
        1
  •  3
  •   Zipflash    14 年前

    :domain => :all

        3
  •  1
  •   Ariejan    14 年前

        4
  •  1
  •   Steven Zeiler    12 年前

    Your::Application.config.session_store :cookie_store, 
                                           :key => '_example.com_session',  
                                           :domain => ".lvh.me"
    

    .