Festlegen von Cookies in Schienen mit Option domain
-
20-09-2019 - |
Frage
Ich versuche, ein Cookie in einer Domäne zu setzen und Zugriff auf sie von einem anderen. Ist das möglich?
Hier ist, was ich in meiner app tun:
In einer Steuerung, die Testaktion wird über diese URL zugegriffen:
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
Im gleichen Controller, die test2 Aktion wird über diese URL zugegriffen:
http://myapp.heroku.com/account/test2
def test2
puts "foo=#{cookies[:foo]}"
end
aber der Wert von Cookies [: foo] ist immer leer. Ist es möglich, das Cookie aus der heroku.com Domäne zuzugreifen. Ich dachte, die Einstellung: Option domain würde dies zulassen.
Danke.
Lösung
Die: Domain-Option (und Einstellung Domäne auf Cookies im Allgemeinen) nur funktioniert wirklich über Subdomains. das heißt für app1.mysite.com und app2.mysite.com -. Sie die Cookie-Domäne .mysite.com einstellen könnten und haben es zwischen den Unterdomänen geteilt
Dies ist nur, wie Cookies Arbeit ausgelegt ist. myapp.com und myapp.heroku.com sind getrennte Domänen, nicht Sub-Domains, also versucht, die Domain auf diese Weise Arbeit nicht gehen zu setzen.
Es gibt einige Möglichkeiten, echtes Cross-Domain-Cookies zu erreichen - aber sie sind vielmehr beteiligt.
Andere Tipps
Sie können dies nicht für eine andere Domäne, aber Sie können es für Subdomains tun. So zum Beispiel,
eine App auf Domain example.com
ausgeführt wird, kann ein Cookie für subdomain.example.com
gesetzt, aber nicht für exampleapp.com
.
Ich muß hinzufügen, wenn es auch für andere, beliebige Domänen Satz Cookies möglich wäre, würde es massive Sicherheit / Schutz der Privatsphäre sein.
Sie können die gleichen Cookies für alle Ihre Domains durch die folgende in environment.rb tun:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']
finden Sie unter hier für die Dokumentation.
Sie können wollen http://coderack.org/users/ ahamid / Middle / 142-session-Injektor