Проблемы с настройкой cookie в Rails - PullRequest
3 голосов
/ 23 октября 2008

У меня есть приложение Rails, которое устанавливает файл cookie и выполняет перенаправление на другой сервер после входа пользователя в систему. Однако файл cookie, который устанавливает приложение Rails, по какой-то причине не видится сервером. Я попытался установить для http_only значение false, но я до сих пор не вижу даже 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]

Если я вручную создаю файл cookie с расширением для веб-разработчиков в Firefox, он работает нормально, но не тогда, когда это делает Rails. Есть идеи?

Ответы [ 3 ]

9 голосов
/ 23 октября 2008

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

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

1 голос
/ 23 октября 2008

Я все еще не могу увидеть cookie, если домен не совпадает с моим Rails-приложением.

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

0 голосов
/ 10 июля 2014

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...