У меня есть приложение 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'
также не устанавливает cookie.
Я в недоумении. Почему это работает в производстве на героку, а не локально. Я даже пробовал разные серверы (Webrick с rails server
и автономный пассажир). Я также попытался запустить локально на порту 80 вместо 3000, но это также не имеет значения.
Есть какие-нибудь подсказки, почему cookie сессии не устанавливается локально? Спасибо!