SecurityError из Facebook и межсетевых сообщений
У нас есть приложение, которое использует функции javascript javascript и возможности входа в систему.
Мы заметили, что эта ошибка появилась в наших журналах. В частности, для iOS-устройств с версиями 10.3 и выше. Также кажется, что он ориентирован только на сафари-браузеры.
SecurityError (DOM Exception 18): заблокирован кадр с источником " https://www.mymadeupsite.com" от доступа к кадру с источником " https://staticxx.facebook.com". Доступный кадр "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);
}
}
Мой вопрос, почему мы получаем эту ошибку только на устройствах iOS и версиях 10.3?
Ответы
Ответ 1
Я тоже столкнулся с этой проблемой, и после того, как он копался, кажется, что ошибка в автозаполнении браузера: стек, который отправляется в наш кластер протоколирования, выглядит следующим образом:
[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
, которая (для нас) не существует нигде в базе кода. Поиск Google показывает, что оба extractForms
и extractNewForms
являются частью библиотеки автозаполнения браузера, а поток здесь показывает, что есть ошибка (комментарии 12 и 15 наиболее важны для вашей проблемы).
Насколько я могу судить, это также не связано конкретно с Facebook: в наших журналах мы видим похожие ошибки для большего числа iframe, включая iframes из (под) доменов, которыми мы управляем сами.
К сожалению, я не знаю о каких-либо исправлениях или обходных решениях, и я также очень сомневаюсь, что возможно (исправление/обход пользователя). Я думаю, что единственное, что вы можете сделать, это проигнорировать эти ошибки.