Der Fehler "Unsicherer JavaScript-Versuch, mit URL auf Frame zuzugreifen ..." wird im Chrome Webkit Inspector kontinuierlich generiert


129

Chrome (oder ein anderer Webkit-Browser) löst eine Menge dieser "Unsicheren JavaScript-Versuche, mit URL auf Frame zuzugreifen ..." aus, wenn Sie beispielsweise mit der Facebook-API arbeiten.

Es stört den tatsächlichen Betrieb nicht, macht die Javascript-Konsole jedoch grundsätzlich unbrauchbar.

Ich möchte wissen, ob es eine Möglichkeit gibt, diese Fehler speziell in der Konsole zu unterdrücken. Oder wenn es andere Lösungen gibt, an die ihr denken könnt, würde ich es wirklich schätzen.

Vielen Dank.


1
Derzeit verwende ich die Problemumgehung, indem nur die Registerkarte "Konsole" so eingestellt wird, dass nur Protokolle angezeigt werden. Ich suche nach einer Lösung, mit der ich Fehler verfolgen kann (nur nicht diese).
Neil Sarkar

Es wäre gut, ein Beispiel dafür bereitzustellen, wie Sie die API verwenden. Es gibt viele Gründe, warum dies passieren könnte.
Kinlan

Ich weiß, was du meinst, aber ich bin mir ziemlich sicher, dass dies bei jeder Facebook-Integration passiert. Öffnen Sie beispielsweise Ihre Webkit-JS-Konsole auf der Domino-Website (in Produktion) pizzaholdouts.com
Neil Sarkar,

1
Versuchen Sie nicht einfach Cross-Site-Scripting? Fordern Sie Facebook-API-Adressen von Ihrem eigenen Server an? Der Weg ist etwas anders.
Tomasz Durka

4
Ohne etwas anzufordern, habe ich einfach das Boilerplate-Zeug eingefügt, damit die js sdk- Entwickler
Neil Sarkar

Antworten:


19

Sie können domänenübergreifende Anforderungen während des Tests zulassen, indem Sie Chrome mit der --disable-web-securityBefehlszeilenoption ausführen. Dies sollte wahrscheinlich den Fehler beseitigen (und FB erlauben, Ihre Tests auszuspionieren;)


hmm das ist faszinierend ... gibt es eine Möglichkeit, die Option auf diese Weise von der Befehlszeile abzuheben? Ich habe es über die Kommandozeile versucht: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-securityund es schien zu funktionieren! Aber es hieß, mein Profil könne nicht geladen werden. Haben Sie eine Idee, wie Sie dieses Flag in der App setzen oder als Standard festlegen können?
Neil Sarkar

4
Als Update verwende ich jetzt ausschließlich Chrom und würde immer noch gerne die Antwort darauf wissen
Neil Sarkar

2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security
Sandstrom

4

Dies geschieht, wenn eine Quelle aus einer anderen Domäne geladen wird und versucht, auf document.cookie zuzugreifen. Dies geschieht sowohl bei Kopfquellen (Skript-Tags) als auch bei Iframe-Dokumenten, die aus irgendeinem Grund versuchen, auf document.cookie zuzugreifen.


4

Was ist das Problem?

Tonnenweise Unsafe JavaScript attempt to access frame with URL...Fehlermeldungen in der Chrome JS-Konsole.

Wie @thechrisproject hervorhebt , werden diese Fehler durch viele seriöse APIs und Widgets von Drittanbietern verursacht, einschließlich, aber nicht beschränkt auf:

  • Das Facebook JS SDK
  • Vimeo Iframe Embed
  • Google Maps Iframe Embed

Mein Verständnis zum Warum : (Bitte korrigieren Sie mich, wenn ich falsch liege)

Chrome hat strengere Sicherheitseinstellungen und / oder zeigt mehr solche Fehler als konkurrierende Browser. API- / Widget- / Embed-Autoren versuchen, Dinge (domänenübergreifend / Frame) zu tun, die nicht in allen Browsern funktionieren (wahrscheinlich für ihre eigenen Berichte / Analysen), die jedoch die Benutzerfreundlichkeit ihres Widgets nicht beeinträchtigen, wenn dies nicht der Fall ist Arbeit (verursacht nur viele nervige Fehler)

Schnelle Antwort

NEIN, Sie können diese Fehler in der Chrome-Konsole nicht ( nur ) unterdrücken.

Lösungen?

  • Komm damit klar. Diese Fehler beschädigen diese APIs und Widgets von Drittanbietern nicht, sondern erschweren lediglich die Verwendung der Konsole
  • Sie können die Konsole so einstellen, dass nur Warnungen, Protokolle oder Debug-Meldungen protokolliert werden. Dadurch werden ALLE Fehler ausgeblendet.
  • Sie können einen anderen Browser verwenden
  • Als @Dagg_Nabbit. weist darauf hin , können Sie durch Ausführen von Chrom mit der Cross-Domain - Anfragen erlauben --disable-web-securityBefehlszeilenoption. Weitere Informationen hier: Deaktivieren Sie dieselbe Ursprungsrichtlinie in Chrome . Beachten Sie, dass diese Einstellung die Sicherheit Ihres Browsers beeinträchtigt. Ich habe 2 Chrome-Verknüpfungen, damit ich sie mit oder ohne diese Flagge öffnen kann.

3

Da wir den Google-Nutzern nicht die Schuld an der Erstellung eines so sicheren Browsers geben können, ist es meiner Meinung nach die beste Lösung, die serverseitigen Lösungen von Facebook (z. B. PHP SDK) zu verwenden. Dadurch sparen Sie viel, viel, viel, viel. viel Kopfschmerzen. Der einzige Vorteil, den ich bei der Verwendung des FB-Javascript-SDK sehe, ist die Popup-Anmeldung, die Sie selbst mit Javascript / jQuery durchführen können.


6
Warum erspart die Verwendung des PHP-SDK (oder eines anderen serverseitigen SDK) viel Kopfschmerzen?
Steve Horn

@steve: Die bloße Tatsache, dass Chrome die unsichere Anfrage blockiert, gibt viele Antworten darauf, wie unsicher die clientseitige Verarbeitung ist.
Jhourlad Estrella

2
Die IMHO-Verschmutzung der JS-Konsole sollte bei der Entscheidung, ob eine logische Server- oder eine Client-Seite verwendet werden soll, nicht im Vordergrund stehen.
Zach Lysobey

1
Leistung, Sicherheit, Code-Organisation / Wartbarkeit, Portabilität - alles Dinge, die ich zuerst berücksichtigen würde. stackoverflow.com/questions/1516852/…
Zach Lysobey

2

Diese Fehler können ausgelöst werden, wenn Sie bei der Registrierung Ihrer App bei Facebook keinen nachgestellten Schrägstrich im Feld Site-URL haben. Mit anderen Worten, Sie benötigen " http://domain.com / " und nicht " http://domain.com ".

Sie können die Site-URL-Einstellung unter developer.facebook.com/apps überprüfen. Einstellungen bearbeiten -> Basis -> Site-URL.


Könnten Sie mir bitte Ihren Satz klarstellen?
itinance
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.