17

我們有一個應用程序,它利用了facebook javascript sdk和登錄功能。來自Facebook和跨域消息傳遞的安全性錯誤

我們一直在注意到這個錯誤出現在我們的生產日誌中。特別適用於版本爲10.3及更高版本的iOS設備。似乎也只能是靶向Safari瀏覽器上

的SecurityError(DOM異常18):訪問一幀與原籍 「https://staticxx.facebook.com」阻止與原籍 「https://www.mymadeupsite.com」的幀。被訪問的幀將 「document.domain」設置爲「facebook.com」,但請求訪問 的幀沒有。兩者都必須將「document.domain」設置爲相同的值以允許訪問 。

這裏是我們的初始化函數:

 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); 
      } 
     } 

我的問題,爲什麼我們只獲得了在iOS設備和10.3版本,這個錯誤?

回答

13

我就遇到了這個問題,以及和周圍挖它似乎是在瀏覽器的自動填充錯誤後:這是發送到我們的記錄集羣堆棧跟蹤看起來如下:

[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 

,你可以看,這個錯誤發生在extractForms函數的某個地方,這對我們而言並不存在於代碼庫的任何地方。谷歌搜索顯示,extractFormsextractNewForms都是瀏覽器的自動填充庫的一部分,線程here表明存在一個錯誤(與您的問題最相關)。

據我所知,這也與Facebook沒有特別的關係:在我們的日誌中,我們看到類似的錯誤更多的iframe,包括我們控制自己的(子)域的iframe。

不幸的是,我不知道任何修補程序或解決方法,我也非常懷疑(用戶區)修復/解決方法是否實際可行。我認爲你唯一能做的就是忽略這些錯誤。

+0

根據您鏈接的線索,應該從Chrome 59(2017年5月)開始修復。 – felix

+2

我的網站上有同樣的錯誤。只有來自ipad和iphone的用戶才能體驗它。 – Stalinko

+0

剛剛還有一堆錯誤報告,來自iOS 10.3.1和Chrome 60 –