Safari und php-sessions funktionieren nicht in facebook iframe
Ich habe da ein problem, mein facebook app funktioniert auf Safari.
Das Problem mit dem PHP session-Variablen.
Ich bin mir bewusst, dass Safari hat ein problem im Umgang mit cross-domain-Sitzungen (innerhalb eines iframe) und die fand ich um 2 Arten von Lösungen:
- Einstellung der p3p-header: ich habe versucht, viele p3p-header gefunden, aber keiner von Ihnen arbeitete zum Beispiel [:
header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');
]. - Senden von einem post auf den iframe mit javascript. Das schafft Interaktion und sessions arbeiten soll. Aber die Tatsache ist, dass ich keine Kontrolle über die iframe-container, wie das ist, facebook.
Weiß jemand eine alternative Lösung?
Dank!
- Ich hatte das gleiche Problem und erstellt einen workaround, der für mich geeignet. Hoffe, das hilft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT: Bestätigt, diese Umgehungsmöglichkeit funktioniert nicht mehr auf Safari 5.1 auf dem Mac. Hier diskutiert: Safari 3rd-party-cookie-iframe-trick nicht mehr funktioniert?
Ich weiß nicht, was 's Ihren Fall, aber in unserer app haben wir einen Willkommens-Bildschirm mit "Zugriff Zulassen" - button, öffnet sich das Dialogfeld Berechtigungen. Wenn der Benutzer klickt auf 'Zugriff Gestatten' ich verwenden, um ein neues Fenster öffnen, dass stellt die Sitzung und schließt sich sofort (dies wurde vorgeschlagen, in der Frage weiter oben verlinkt). Nachdem der Benutzer zugreifen darf, können Sie nur die Seite neu laden? In unserem Fall ist dies nicht nötig, da die gesamte Kommunikation mit dem server mit ajax.
Bin ich mit der zweiten Lösung und habe kein problem damit, hier ist mein code (mit jQuery):
In startsession.php ich bin nur ab der Sitzung:
Ich bin spät dran, aber es kann auch helfen, jemand anderes zu suchen, bis dieses problem.
Die einzige Methode, die ich machen konnte, die Arbeit war zu erkennen, safari von innen mein iframe und die Umleitung zu einer anderen Seite, momentan, wo ich könnte meine session-cookie - leiten Sie anschließend zurück.
Dann aus setcookie.php
sein ein bisschen lahm, aber funktioniert, und nicht stören die anderen Browser. Die andere Methode ist die Verwendung eines popup-Fenster, obwohl mein safari hatte dieses standardmäßig blockiert.
bei weitem nicht die schönste Lösung, aber Sie brauchen keine extra-Seiten
legen Sie die Lösung auf der ersten position auf Ihrer Seite, so dass Sie nur sehen, einige weiße Flackern.
senden Sie Ihre Referrer-url zu der Seite, wo Sie tatsächlich Ihre Sachen.
nichts zusätzliches benötigt.
dann beziehen Sie zurück zu der Seite, die Sie wurden in den ersten Platz.