2009-12-19 9 views
1

J'essaie de définir un cookie dans un domaine et d'y accéder depuis un autre. Est-ce possible?Définition de cookies dans des rails avec l'option de domaine

Voici ce que je fais dans mon application:

Dans un contrôleur, l'action de test est accessible via l'adresse suivante:

http://myapp.com/account/test

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

Dans le même contrôleur, le L'action test2 est accessible via cette URL:

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

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

mais la valeur des cookies [:] foo est toujours vide. Est-il possible d'accéder au cookie depuis le domaine heroku.com? Je pensais que définir l'option: domain permettrait cela.

Merci.

Répondre

1

L'option domain (et la définition de domaine sur les cookies en général) ne fonctionne réellement que sur des sous-domaines. c'est-à-dire pour app1.mysite.com et app2.mysite.com - vous pouvez définir le domaine de cookies sur .mysite.com et le partager entre les sous-domaines.

Voici comment les cookies sont conçus pour fonctionner. myapp.com et myapp.heroku.com sont des domaines distincts et non des sous-domaines, donc essayer de définir le domaine de cette façon ne fonctionnera pas.

Il existe des moyens pour réaliser de véritables témoins inter-domaines - mais ils sont rather involved.

3

Vous ne pouvez pas faire cela pour un domaine différent, mais vous pouvez le faire pour des sous-domaines. Ainsi, par exemple, une application s'exécutant sur le domaine example.com peut définir un cookie pour subdomain.example.com mais pas pour exampleapp.com.

Je dois ajouter, s'il était possible de définir des cookies pour d'autres domaines arbitraires, il y aurait d'énormes problèmes de sécurité/confidentialité.

Vous pouvez définir les mêmes cookies pour tous vos domaines en procédant comme suit dans environment.rb:

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

voir here pour la documentation.

+0

En outre, il est possible que certains navigateurs (ou plug-ins) ne laisseront pas votre app faire ça ... mais je ne sais pas à coup sûr. –

Questions connexes