Ошибка безопасности с 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://.