les cookies mise en rails avec option de domaine
-
20-09-2019 - |
Question
Je suis en train de définir un cookie dans un domaine et l'accès d'un autre. Est-ce possible?
Voici ce que je fais dans mon application:
Dans un contrôleur, l'action de test est accessible via l'adresse suivante:
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
Dans le même contrôleur, l'action test2 est accessible via l'adresse suivante:
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 du domaine heroku.com. Je pensais que le réglage de la: option de domaine permettrait.
Merci.
La solution
: option de domaine (domaine et la mise sur les cookies en général) ne fonctionne que vraiment à travers les sous-domaines. dire pour app1.mysite.com et app2.mysite.com - vous pouvez définir le domaine de cookie .monsite.com et avoir partagé entre les sous-domaines
.Ceci est juste comment les cookies sont conçus pour fonctionner. myapp.com et myapp.heroku.com sont des domaines distincts, et non pas des sous-domaines, afin de tenter de définir le domaine de cette façon ne va pas fonctionner.
Il existe des moyens pour réaliser de véritables témoins inter-domaines - mais ils sont plutôt impliqué.
Autres conseils
Vous ne pouvez pas le faire pour un autre domaine, mais vous pouvez le faire pour les sous-domaines. Ainsi, par exemple,
une application en cours d'exécution 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 des problèmes massifs 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 ici pour la documentation.
Vous pouvez consulter http://coderack.org/users/ ahamid / intergiciels / 142-session-injecteur