17

Wir haben eine Anwendung, die die Facebook-Javascript-SDK und Login-Funktionen nutzt.SecurityError von Facebook und Cross Domain Messaging

Wir haben festgestellt, dass dieser Fehler in unseren Produktionsprotokollen auftaucht. Speziell für iOS-Geräte mit Version 10.3 und höher. nur scheint auch Browser-Targeting Safari

Security (DOM Exception 18) zu sein: Blockierte einen Rahmen mit Ursprung "https://www.mymadeupsite.com" aus einem Rahmen mit Ursprung "https://staticxx.facebook.com" zugreifen. Der Frame, auf den zugegriffen wird, setzt "document.domain" auf "facebook.com", aber der Rahmen, der den Zugriff anfordert, hat nicht . Beide müssen "document.domain" auf denselben Wert setzen, um den Zugriff auf zu ermöglichen.

Hier ist unsere init-Funktion:

 init: function(options) { 
      var facebookUrl, scriptInclude; 
      Facebook.baseHost = options.baseHost; 
      if (typeof FB !== "undefined" && FB !== null) { 
       return Facebook.setup(); 
      } else { 
       if (options.appId == null) { 
        throw 'Facebook: cannot init without appId'; 
       } 
       window.fbAsyncInit = function() { 
        FB.init({ 
         appId: options.appId, 
         version : 'v2.3', 
         channelUrl: options.channelUrl || ("" + document.location.protocol + "//" + document.location.host + "/channel.html"), 
         status: true, 
         cookie: false, 
         xfbml: false, 
         oauth: true 
        }); 
        return Facebook.setup(); 
       }; 
       $('body').append('<div id="fb-root"></div>'); 
       facebookUrl = "//connect.facebook.net/" + (Facebook.getLocaleFacebookSupports(Social.SETTINGS.fbLocale)) + "/sdk.js"; 
       scriptInclude = "<script type=\"text/javascript\" async=\"true\" src=\"" + facebookUrl + "\"></script>"; 
       return $('#fb-root').append(scriptInclude); 
      } 
     } 

Meine Frage, warum wir diesen Fehler nur auf iOS-Geräten und Versionen bekommen 10.3?

Antwort

13

ich in dieser Ausgabe lief als gut, und nach dem Graben um es um einen Fehler in dem Browser des Autofill zu sein scheint: die Stacktrace, die zu unserer Protokollierungs Cluster aussieht, ist senden, wie folgt:

[email protected]://example.com:5:190, 
[email protected]://example.com:7:323, 
[email protected]://example.com:13:37, 
[email protected]://example.com:8:381, 
global [email protected]://example.com:1:98 

Wie Sie können siehe, der Fehler tritt irgendwo in einer extractForms Funktion auf, die (für uns) nirgends in der Codebasis existiert. Eine Google-Suche zeigt, dass sowohl extractForms als auch extractNewForms Teil der AutoFill-Bibliothek des Browsers sind, und der Thread here schlägt vor, dass dort ein Fehler ist (Kommentare 12 & 15 sind am relevantesten für Ihr Problem).

Soweit ich das beurteilen kann, ist dies auch nicht speziell auf Facebook bezogen: In unseren Protokollen sehen wir ähnliche Fehler für weitere Iframes, einschließlich Iframes aus (Sub-) Domänen, die wir selbst steuern.

Leider weiß ich nicht über eine Fehlerbehebung oder eine Problemumgehung, und ich bezweifle auch stark, ob eine (User-Land) Fix/Workaround tatsächlich möglich ist. Ich denke, das einzige, was Sie tun können, ist, diese Fehler zu ignorieren.

+0

Sollte nach Chrome 59 (Mai 2017) gemäß dem Thread, den Sie verknüpft haben, behoben sein. – felix

+2

Ich habe denselben Fehler auf meiner Website. Nur Benutzer von ipad und iphone erfahren es. – Stalinko

+0

Ich hatte gerade eine Reihe von Fehlerberichten, die aus iOS 10.3.1 und Chrome 60 stammen –