Настройка куки в рельсах с опцией домена - PullRequest
1 голос
/ 19 декабря 2009

Я пытаюсь установить cookie в одном домене и получить к нему доступ из другого. Возможно ли это?

Вот что я делаю в своем приложении:

В контроллере тестовое действие доступно по этому URL:

http://myapp.com/account/test

def test
  cookies[:foo] = {
    :value => 'something',
    :domain => 'myapp.heroku.com'
  }
end

В том же контроллере, действие test2 доступно через этот URL:

http://myapp.heroku.com/account/test2

def test2 
  puts "foo=#{cookies[:foo]}"
end

но значение cookie [: foo] всегда пусто. Можно ли получить доступ к cookie из домена heroku.com. Я думал, установка параметра: домен позволит это.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 19 декабря 2009

Вы не можете сделать это для другого домена, но вы можете сделать это для поддоменов. Так, например, приложение, работающее в домене example.com, может установить cookie для subdomain.example.com, но не для exampleapp.com.

Я должен добавить, что если бы можно было установить файлы cookie для других, произвольных доменов, возникли бы серьезные проблемы с безопасностью и конфиденциальностью.

Вы можете установить одинаковые куки для всех ваших доменов, выполнив в environment.rb следующее:

 ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']

см. здесь для документации.

1 голос
/ 19 декабря 2009

Опция: domain (и настройка домена для файлов cookie в целом) действительно работает только для поддоменов. то есть для app1.mysite.com и app2.mysite.com - вы можете установить домен cookie для .mysite.com и распределить его между поддоменами.

Именно так куки предназначены для работы. myapp.com и myapp.heroku.com являются отдельными доменами, а не поддоменами, поэтому попытка установить домен таким способом не будет работать.

Есть несколько способов получить настоящие междоменные куки, но они скорее задействованы.

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