Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自Facebook和跨域消息的安全性错误_Javascript_Ios_Facebook_Cross Domain_Facebook Javascript Sdk - Fatal编程技术网

Javascript 来自Facebook和跨域消息的安全性错误

Javascript 来自Facebook和跨域消息的安全性错误,javascript,ios,facebook,cross-domain,facebook-javascript-sdk,Javascript,Ios,Facebook,Cross Domain,Facebook Javascript Sdk,我们有一个利用facebook javascript sdk和登录功能的应用程序 我们注意到这个错误出现在我们的生产日志中。特别适用于10.3及更高版本的iOS设备。似乎也只针对safari浏览器 SecurityError(DOM异常18):阻止具有原点的帧 “”访问具有原点的帧 "". 正在访问的帧集 “document.domain”到“facebook.com”,但框架请求访问 没有。两者必须将“document.domain”设置为相同的值才能允许 进入 这是我们的init函数:

我们有一个利用facebook javascript sdk和登录功能的应用程序

我们注意到这个错误出现在我们的生产日志中。特别适用于10.3及更高版本的iOS设备。似乎也只针对safari浏览器

SecurityError(DOM异常18):阻止具有原点的帧 “”访问具有原点的帧 "". 正在访问的帧集 “document.domain”到“facebook.com”,但框架请求访问 没有。两者必须将“document.domain”设置为相同的值才能允许 进入

这是我们的init函数:

        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);
            }
        }
init:函数(选项){
var facebookUrl,scriptInclude;
Facebook.baseHost=options.baseHost;
if(类型FB!==“未定义”&&FB!==null){
返回Facebook.setup();
}否则{
如果(options.appId==null){
抛出“Facebook:无法在没有appId的情况下初始化”;
}
window.fbAsyninit=函数(){
FB.init({
appId:options.appId,
版本:“v2.3”,
channelUrl:options.channelUrl | |(“+document.location.protocol+”/“+document.location.host+”/channel.html”),
状态:正确,
曲奇:错,
xfbml:false,
真的吗
});
返回Facebook.setup();
};
$('body')。追加('');
facebookUrl=“//connect.facebook.net/”+(facebook.getlocalefacebooksupport(Social.SETTINGS.fbLocale))+“/sdk.js”;
“包括”;
返回$('#fb root').append(scriptInclude);
}
}

我的问题是,为什么我们只在iOS设备和10.3版上出现这个错误?

我也遇到了这个问题,在仔细研究之后,它似乎是浏览器自动填充中的一个错误:发送到日志集群的stacktrace如下所示:

g@https://example.com:5:190, 
g@https://example.com:7:323, 
extractNewForms@https://example.com:13:37, 
extractForms@https://example.com:8:381, 
global code@https://example.com:1:98
如您所见,错误发生在
extractForms
函数中的某个地方,而该函数(对我们来说)在代码库中的任何地方都不存在。谷歌搜索显示
extractForms
extractNewForms
都是浏览器自动填充库的一部分,该线程表明其中存在一个bug(注释12和15与您的问题最相关)

据我所知,这也与Facebook无关:在我们的日志中,我们看到更多iFrame出现类似错误,包括来自我们自己控制的(子)域的iFrame


不幸的是,我不知道任何修复或解决方法,我也高度怀疑(用户土地)修复/解决方法是否真的可行。我想你唯一能做的就是忽略这些错误。

应该从Chrome 59(2017年5月)开始根据你链接的线程进行修复。我的网站上也有相同的错误。只有ipad和iphone的用户才会体验到这一点。iOS 10.3.1和Chrome60也有一大堆关于这一点的错误报告