Ошибка безопасности с iframe
Следующая проблема возникает в устройствах Android 4.4 и выше.
Вот что выглядит наш iframe:
<iframe frameborder=0 id="myIFRAME"></iframe>
Далее мы получаем программный код iframe:
if(document.getElementById("myIFRAME")){
me.setMyIFRAME(document.getElementById("myIFRAME").contentWindow);
}
Это вызывает ошибку безопасности, связанную с несоответствием протокола:
"Uncaught SecurityError: заблокирован кадр с источником" https://www.google.com "от доступа к кадру с исходным файлом://". Запрос доступа к кадру имеет протокол "https", причем кадр accessed имеет протокол "файл". Протоколы должны соответствовать.
Мы используем Sencha touch с Cordova для разработки нашего проекта.
Ответы
Ответ 1
Оказалось, что iframe загружал html-страницу, которая обращалась к окну .document, который вызывал ошибку безопасности междоменного доступа
Ниже, если условие было внутри страницы
if (window.parent.document != window.document)
мы изменим его на условие ниже, которое разрешает ошибку безопасности
if (window.parent != window)
Ответ 2
Руководство по безопасности Cordova говорит:
Если контент передается в iframe из домена с белым списком, этот домен будет иметь доступ к собственному мосту Cordova.
Вы пытались добавить внешний домен в белый список внутри config.xml
?
<access origin="https://google.com" />
Ответ 3
@Ритика,
Я принимаю дикие предположения здесь, потому что я не использую iframes, но в вашем элементе <iframe>
я не вижу a src
. Таким образом, система устанавливает его по типу по умолчанию, а протокол этого источника - file://
Я думаю, что если вы установите src=
, даже пустой, проблема исчезнет.
В гостях, просто догадка. Лучшее из удачи.
Ответ 4
-
Google недоступен через iFrame.
-
На странице, обслуживаемой с использованием протокола file://
, по умолчанию не удается получить доступ к ресурсам по протоколу http://
или https://
.
Ответ 5
Персоналии, я бы избегал использовать iFrames все вместе.
https://github.com/phonegap/phonegap/wiki/iFrame-Usage