2009-05-13 6 views
0

Ich habe Benutzereinstellung (Farbe, Locale-Einstellungen) auf example.com, dass ichDuplizieren Cookies in einer anderen Domäne

example2.com migrieren mag ich mich, wenn ich AJAX oder eine versteckte iFrame verwenden kann, um Übergeben Sie die Cookie-Informationen von example.com an example2.com, die dann einen weiteren Cookie mit den gleichen Informationen auf example2.com setzen.

Ich weiß, ich könnte dies leicht über die URL-Zeichenfolge und eine Weiterleitung tun, aber ich möchte dies im Hintergrund erreichen, wenn möglich - keine Weiterleitungen - und muss auf großen Browsern arbeiten (IE6 +, FF1.5 +, Safari, Opera)

Punkt ist diese Cookie-Informationen nicht sicher, so dass es kein Risiko gibt.

Antwort

1

Richten Sie einen Pfad auf example.com, die eine JavaScript-Datei erzeugt in enthält die übergebenen Cookies. Sagen wir es example.com/get_cookie.js ist

Dann können Sie einen Ajax-Aufruf tun von example2.com zum Beispiel .com/get_cookie.js, um diese Cookies zu erhalten, und speichern Sie sie unter example2.com.

Da es domänenübergreifend ist, können Sie XHR (XmlHttpRequest) nicht verwenden, stattdessen müssen Sie get_cookie.js als JavaScript-Knoten anhängen, und diese Javascript-Datei muss einen Callback aufrufen, um die Daten zu übergeben .

So get_cookie.js aussehen würde ungefähr wie:

return_data('here is my example.com cookie info'); 
+0

gute Idee - danke – stunnaman

2

Es hängt von der Browser-Konfiguration für Starter ab, wenn der Browser so konfiguriert ist, dass er Cookies von Drittanbietern ablehnt, haben Sie kein Glück.

Angenommen, Sie steuern example.com, und der Cookie ist kein HTTP-only-Cookie, sondern Sie könnten ein Skript hinzufügen. Das Skript schreibt ein img-Tag, das auf ein Skript auf example2.com verweist, mit document.cookies als Parameter. Schreibe innerhalb des Skripts ein 1x1 transparentes GIF aus und füge das Cookie aus dem Beispiel an die Antwort an, nachdem die Parameterzeichenfolge geparst wurde, um die Cookie-Name/Wert-Paare herauszuziehen.

+0

Dank, immer noch leicht durch diese verwirrt - Cookie-Werte werden mit dem 1x1-Anforderung gesendet (example2.com/1x1.gif?setting1=this&setting2=this) 1x1.gif tatsächlich ein Skript lädt die setzt einen Cookie, der von example2.com stammt - werden Browser dies erlauben? – stunnaman

+0

Sie können, wenn sie so konfiguriert sind, dass sie Cookies von Drittanbietern zulassen. Die meisten sind standardmäßig (obwohl IE eine p3p-Richtlinie benötigt). Das Skript gibt kein Skript zurück, es gibt das korrekte binäre GIF zurück, fügt aber auch die Cookie-Header für seinen eigenen Cookie hinzu. – blowdart

0

Sie benötigen würde einen Server-zu-Server-XMLHTTP Anfrage zu machen, und haben der zweite Server die Cookies neu erstellen. Du kannst sie nicht "passieren".

Verwandte Themen