wake-up-neo.com

Facebook: Unsicheres JavaScript-Problem (document.domain-Werte sollten identisch sein)

Meins ist eine auf Leinwand basierende FB-App. Probleme sowohl bei Chrome als auch bei Firefox (obwohl in der Regel Chrome):

1.Wenn ich meine genehmigte fb-app-sichere URL in einem neuen inkognito-Chrome-Fenster ( https://apps.facebook.com/myfbappnamespace/ ) anrufe, wird der unten abgebildete Fehler nur beim ersten Mal und beim Aktualisieren angezeigt die Seite ist der Fehler weg (meistens)

Die Seite um ungefähr: Leer zeigt unsicheren Inhalt von .__ an. http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = unknown_user.

Unsicherer JavaScript-Versuch, auf den Frame mit der URL .__ zuzugreifen. http://www.mydomain.com/control/myfacebookapp/ aus dem Frame mit der URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = unknown_user . Der Frame, der den Zugriff anfordert, stellte 'document.domain' auf 'facebook.com' ein, aber auf den Frame, auf den zugegriffen wird, ist dies nicht der Fall. Beide müssen 'document.domain' .__ einstellen. auf den gleichen Wert, um den Zugriff zu ermöglichen.
xd_arbiter.php: 18

Unsicherer JavaScript-Versuch, auf den Frame mit der URL .__ zuzugreifen. http://www.mydomain.com/control/myfacebookapp/ aus dem Frame mit der URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = unknown_user . Der Frame, der den Zugriff anfordert, stellte 'document.domain' auf 'facebook.com' ein, aber auf den Frame, auf den zugegriffen wird, ist dies nicht der Fall. Beide müssen 'document.domain' .__ einstellen. auf den gleichen Wert, um den Zugriff zu ermöglichen. xd_arbiter.php: 18

2.Wenn ich die http-URL ( http://apps.facebook.com/myfbappnamespace/ ) versuche, lautet der in der Konsole angezeigte Fehler:

Unsicherer JavaScript-Versuch, auf den Frame mit der URL .__ zuzugreifen. http://apps.facebook.com/myfbappnamespace/ aus dem Frame mit der URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= … Fcontrol% 2Ffacebookappchannelurl% 3Ffb_xd_fragment% 23xd_sig% 3Df23e84e85c% 26 . Der Frame, der den Zugriff anfordert, hat ein Protokoll von "https", wobei der Frame .__ ist. Zugriff hat ein Protokoll von 'http'. Protokolle müssen übereinstimmen.

Wenn ich mich jetzt bei meinem fb-Konto anmelde, um zu sehen, was mit diesen Fehlern passiert, sind sie wieder weg, nur manchmal. Ich weiß, dass ich hier "meistens" und "manchmal" in meiner Abfrage verwende, aber genau das passiert bei mir. Ich habe auch in Foren gesucht und erkenne, dass fb dieses alte Problem bereits behoben hat, das chromspezifisch sein sollte. Ich habe sichergestellt, dass meine FB.init und andere Aufrufe location.protocol-Wert sind. Außerdem wurden korrekte Werte für die Canvas-URL (http) und die sichere Canvas-URL (https) konfiguriert. Auch mit beiden Einstellungen versucht: Kontoeinstellungen -> Sicherheit -> Sicheres Browsen -> (Aktiviert sowie Deaktiviert)

Kann jemand bitte helfen, wenn mir irgendwo etwas fehlt?

24
Bhavesh Agarwal

Es gibt viele mögliche Probleme. Versuchen Sie es mit einer dieser Lösungen:

  • die Protokolle müssen identisch sein (also muss die Seite, die versucht, auf den iframe zuzugreifen, über dasselbe Protokoll der Site verfügen, die den iframe bereitstellt). Wenn Sie Ihre App im Sandbox-Modus (http anstelle von https) testen, deaktivieren Sie "Secure Durchsuchen "-Modus Ihres Testkontos
  • channelUrl bei FB.init()(siehe Code unten)
  • aktiviere den Header-Mod von Apache und füge die folgenden Zeilen in deinen .htaccess ein
  • setzen Sie den <div id="fb-root"></div> hinter dem body-Tag, wie im Fb-Dokument erklärt: https://developers.facebook.com/docs/reference/javascript/
  • versuchen Sie, den gesamten automatisierten Anmeldecode nach einer Benutzeraktion einzugeben (wie ein Klick auf eine Anmeldeschaltfläche)
  • entfernen Sie den nachstehenden Schrägstrich aus der Canvas-URL (in App → Einstellungen) wie http://yoursite.com?.
  • bearbeiten Sie Ihren <html>-Tag wie folgt: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

Code für .htaccess

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Code für channels Problem:

FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

Die von Ihrem Server gelieferte channel.html sollte diese einzige Zeile enthalten:

<script src="//connect.facebook.net/en_US/all.js"></script>

EDIT

Über Ihre erste Ausgabe:

The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.

Dies ist eine erwartete Ausnahme, die zum Testen einer Bedingung verwendet wird - dies hat keine Nebenwirkungen, also kümmere dich nicht darum.

Bitte beziehen Sie sich auf diese Frage: Unsicherer JavaScript-Versuch, auf Frame mit URL zuzugreifen: Domänen, Protokolle und Ports müssen übereinstimmen.

23

In meinem Fall hatte ich eine "facebook-like-box" in der "_Layout" -Ansicht, und ich musste einige CSS dafür anpassen, im global.css Datei.

. fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe [style] {
 Breite: 100%! wichtig; 
} 

Wenn ich dann versucht habe, interne Seiten wie Artikel und News zu laden, die über einen Share-Button für Facebook verfügen, wird mir dieser Fehler angezeigt:

 Uncught SecurityError: Lesen der 'contentDocument'-Eigenschaft aus' HTMLIFrameElement 'fehlgeschlagen: Blockiert einen Frame mit Origin "http: // localhost: 51826", sodass auf einen Frame mit Origin "http: //static.ak.facebook" zugegriffen werden kann. com ". Der Frame, auf den zugegriffen wird, hat "document.domain" auf "facebook.com" gesetzt, der Frame jedoch nicht, der den Zugriff anfordert. Beide müssen "document.domain" auf denselben Wert setzen, um den Zugriff zu ermöglichen .

Irgendwie denke ich, dass diese Zeile des CSS-Codes dieses Problem verursacht hat (indem sie sich im globalen Gültigkeitsbereich befand) und versuchte, auf das Verhalten des iframe für meine Share-Schaltfläche zuzugreifen und dieses zu ändern.

  1. Durch das Entfernen dieser CSS-Codezeile wurde das Problem behoben.
  2. Verschieben Sie diese Zeile des CSS-Codes auf die spezifische Seite, die die "facebook-like-box" innerhalb der <style> -Tags enthält.
0
user3516584