2009-03-24 4 views
6

Wie können Sie einen Cookie auf eine andere Domain setzen, die meine Website mit einem Javascript-Aufruf aufruft? Es funktioniert in FF3, aber nicht in IE6.Wie setze ich einen Cookie auf eine separate Domain in Rails

Mein Server wird von einem Javascript-Tag auf einer separaten Website und Domäne aufgerufen. Das Ergebnis gibt Javascript zurück, das ihre Seite mit Daten füllt (es ist ein Widget). Ich versuche einen Cookie mit domain = ". Mydomain.com" und path = "/" zu setzen. Es funktioniert für Firefox, funktioniert aber nicht im IE. Es funktioniert gut in IE, wenn ich den Javascript-Aufruf von meiner eigenen Domäne aus teste.

Kann jemand Cross-Domain-Cookie-Einstellung in IE arbeiten, mit Rails?

Antwort

9

Solange Ihr Server ein Cookie innerhalb der eigenen Domäne oder von einer Sub-Domain von seiner Domäne setzt, sollte diese

arbeiten
cookies[cookie_name] = { 
    :value => 'a value', 
    :expires => 1.year.from_now, 
    :domain => 'example.com' 
} 

Es wird für alle anderen Domänen nicht.

Um dies in IE6 arbeiten Sie

So etwas wie dies eine gültige P3P Politik-Header benötigen kann es als ein Header gesendet tun sollten:

headers["p3p"] = 'CP="CAO PSA OUR"' 
+0

, das ist, wie ich es gesetzt: Cookies [cookie_name ] = {: value => 'x',: läuft ab => 1.day.from_now,: domain => '.mydomain.com'} Und ja, es funktioniert für Firefox. Ich dachte eigentlich, es würde nicht, aber es tut es. Aber im IE sehe ich, dass es versucht, den Header zu setzen, aber der Cookie ist nicht da, nachdem die Seite geladen wurde. – Zack

+0

Woher weißt du das? Kannst du deinen Code posten, der dir sagt, dass der Cookie nicht da ist? – DanSingerman

+0

Ich benutze Fidler, um die Anrufe zu meiner Domain zu sehen und die Header-Antworten zu betrachten. Ich benutze IE Developer Toolbar, um die Cookies auf meiner Seite (und deren) zu sehen, aber es existiert nicht. Ich versuche auch, den Keks zu greifen, wenn ich auf meine Seite zurückkehre und es existiert nicht. In FF funktioniert alles gut. – Zack