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:

http://myapp.com/account/test

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top