2009-05-27 9 views
4

Angenommen, ich habe eine Webanwendung, die ich mit einem iframe in eine andere Website einbetten möchte. Der Iframe verweist auf meine Website und funktioniert unabhängig von der Hosting-Webseite.Wie kann ich eine Sitzung in einem Iframe beibehalten?

Nun, der Browser hält den iFrame für eine Website eines Drittanbieters, daher wird der Sitzungscookie als Cookie eines Drittanbieters betrachtet. Es gibt einige Verfahren, um die Browser glücklich zu machen (z. B. P3P-Header), aber es ist immer noch möglich, dass der Benutzer Cookies von Drittanbietern vollständig deaktiviert hat. Wenn dies der Fall ist, können Sitzungscookies nicht in einem Iframe verbleiben.

Was sind gute Methoden für das Fortbestehen einer Sitzung in einem iframe auf einer Website von Drittanbietern?

Antwort

2

Meine Absicht ist es, eine Sitzung innerhalb des Iframe zu verfolgen, so dass Klicks und Reloads den Status beibehalten. Es ist nicht erforderlich, Sitzungen zwischen dem Iframe und der Hosting-Site zu verknüpfen.

Das Beste, was ich mir vorstellen konnte, sind Sitzungen ohne Cookies. Es ist ein bisschen manuell, aber mit dieser Seite, auf der PHP läuft, muss ich nur sicherstellen, dass der Querystring immer "PHPSESSID=x" enthält und automatisch an diese Session-ID angehängt wird.

4

Ich habe ein ähnliches Problem, das Sie hier haben konfrontiert. Es gibt eine Problemumgehung (funktioniert nicht, wenn Sie das Benutzerverhalten zwischen verschiedenen Sites verfolgen möchten).

i. Setzen Sie einen dauerhaften Cookie für die erste Partei in die Domäne, in der Ihr iframe gehostet werden soll. (Dies kann mit JavaScript gemacht werden).

ii. Fügen Sie den Iframe dynamisch ein und übergeben Sie den Wert des Cookies an Ihre Site.

iii. Wenn Sie beabsichtigen, das Nutzerverhalten auf verschiedenen Websites zu verfolgen, ändern Sie den oben genannten Code, sodass Sie Cookies von Drittanbietern verwenden können, wenn der Browser dies zulässt. Andernfalls wechseln Sie den oben genannten Ansatz.

Ich habe keine andere Möglichkeit gefunden, um dies zu umgehen. Wenn Sie eine akzeptablere Lösung finden, lassen Sie es mich wissen.

Verwandte Themen