2008-10-22 3 views
3

У меня есть приложение Rails, которое устанавливает cookie и перенаправляет его на другой сервер после входа пользователя в систему. Однако cookie, который устанавливает приложение Rails, по какой-то причине не рассматривается сервером. Я пробовал установить http_only на false, но я все еще не могу видеть cookie, если только домен не совпадает с моим Rails-приложением. Вот код, я использую, чтобы установить печенье:Проблемы с настройками cookie Rails

cookies[:dev_appserver_login] = 
    { :value => "#{email}:#{nick}:#{admin}:#{hsh}", 
    :domain => "webserver-to-redirect-to", 
    :expires => 30.days.from_now } 

redirect_to session[:dest_url] 

Если я вручную создать печенье с Web Developer extension в Firefox это работает прекрасно, но не тогда, когда Rails делает это. Есть идеи?

ответ

9

Что такое перенаправляемые и перенаправленные серверы? Вы можете установить только «домен» в текущее имя хоста или родительский домен, поэтому, если вы находитесь на сайте a.example.com и перенаправляетесь на b.example.com, вам нужно установить «domain» в .example. com, не b.example.com, как подразумевается в фрагменте кода.

(И открытые домены, такие как .com TLD, сами по себе не разрешены как значения домена, поэтому, если вы хотите передать cookie с a.example.com на b.somewhereelse.com, вам понадобится более сложное решение, возможно, включая изменение кода на somethingelse.com.)

+0

А, у моих серверов нет FQDN, так что это всего лишь два IP-адреса. Если они находятся в одной подсети, могу ли я приложить какие-либо специальные трюки? – 2008-10-22 23:15:45

1

Я до сих пор не вижу даже файла cookie, если домен не совпадает с моим Rails-приложением.

Вот как работают куки-файлы. Если вы обращаетесь к нему напрямую по IP, то, что касается веб-браузера, ваш «домен» является вашим IP-адресом, поэтому применяются те же правила.

0

Вы можете обойти эту проблему в режиме разработки, отредактировав/и т.д./хост файл и создавать имена хостов для ваших приложений

127.0.0.1 app1.localdev.com, app2.localdev.com

Затем, когда создается куки установлен домен».localdev .com '(обратите внимание на предыдущий период), который позволит любому приложению в любом субдомене localdev.com читать его.

Другое более широкое решение (которое лучше для развертывания производства, но больше работы по настройке) заключается в настройке прокси-сервера для суб-приложения, поэтому запросы на appdomain.com переходят в приложение1 и запрашивают appdomain.com/ other-app/проксируются в другое приложение. Это позволяет им совместно использовать корневой домен и легко обмениваться файлами cookie.

Смежные вопросы