Pergunta

Estou tentando definir um cookie em um domínio e acessá -lo de outro. Isso é possível?

Aqui está o que estou fazendo no meu aplicativo:

Em um controlador, a ação de teste é acessada através deste URL:

http://myapp.com/account/test

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

No mesmo controlador, a ação do TEST2 é acessada através deste URL:

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

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

Mas o valor dos cookies [: foo] está sempre em branco. É possível acessar o cookie no domínio Heroku.com. Eu pensei que definir a opção: Domínio permitiria isso.

Obrigado.

Foi útil?

Solução

A opção: Domínio (e definir o domínio em cookies em geral) realmente funciona realmente em subdomínios. ou seja, para app1.mysite.com e app2.mysite.com - você pode definir o domínio de cookie como .mysite.com e compartilhá -lo entre os subdomínios.

É assim que os cookies são projetados para funcionar. MyApp.com e myapp.heroku.com são domínios separados, não subdomínios, portanto, tentar definir o domínio dessa maneira não vai funcionar.

Existem algumas maneiras de alcançar verdadeiros cookies de domínio cruzado - mas eles são bastante envolvido.

Outras dicas

Você não pode fazer isso para um domínio diferente, mas pode fazê -lo para subdomínios. Por exemplo, um aplicativo em execução no domínio example.com pode definir um biscoito para subdomain.example.com mas não para exampleapp.com.

Devo acrescentar, se fosse possível definir cookies para outros domínios arbitrários, haveria enormes problemas de segurança/privacidade.

Você pode definir os mesmos cookies para todos os seus domínios, fazendo o seguinte no ambiente.rb:

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

Vejo aqui para a documentação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top