Небезопасная попытка JavaScript для доступа к фрейму с URL

У меня есть страница с Iframe и Javascript из Iframe, которые имеют доступ к функции родительского фрейма. Страницы находятся на одном сервере (это не междоменный сценарий), у меня нет проблем с FF и IE, но когда я использую его в Chrome, у меня появляется сообщение ниже.

Небезопасная попытка JavaScript получить доступ к фрейму с URL-адресом http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.StoricoApp из фрейма с URL-адресом http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.CRMOProxy. Домены, протоколы и порты должны совпадать.

Как я могу решить эту проблему? Я ищу в Google с 4 часов. Я надеюсь, что кто-то может помочь мне.

РЕДАКТИРОВАТЬ: код

Это JavaScript на странице iframe. Этот JavaScript вызывает функцию Javascript родительского фрейма "setUfficioPostale". В этот момент Chrome выдает ошибку "Небезопасный доступ...".

<script>
    window.parent.setUfficioPostale(map);
</script>

Это Javascript в родительском фрейме для отправки формы. Это для отправки скрытой формы со скрытыми параметрами на страницу, загруженную в iframe.

function onAltroUfficioClick(){
    document.getElementById("hiddenParams").submit();
    $('#framePosteMaps').show();
}

Это определение iframe на родительской странице.

<iframe id="framePosteMaps" scrolling="no" name="framePosteMaps"></iframe>

Это форма с целевым атрибутом для отправки параметров на страницу iframe.

<form id="hiddenParams" target="framePosteMaps" action="http://samedomain:51700/irj/servlet/prt/portal/prtroot/TestFrameRC.SimPerProxy" method="POST">
    <input type="hidden" name="distanza" value="10">
    <input type="hidden" name="cliente" value="Retail">
    ....................
</form>

3 ответа

Chrome не позволяет вам сделать это. Код из Iframe не может получить доступ к родительскому коду.

Во-первых, убедитесь, что на обе страницы ссылаются с использованием атрибута SRC iframe одинаково, я имею в виду:

http://samedomain:51700/irj/
http://samedomain:51700/irj/

поскольку возможно, что даже если они работают на одной машине, один из этих iFrames называется следующим образом:

http://localhost:51700/irj/

и другие:

http://MachineId:51700/irj/

или любая другая комбинация.

Вы можете проверить это, изучив код с помощью инструментов разработчика во всех современных браузерах.

Chrome позволяет вызывать родительские функции, если они находятся в одном домене (я делаю это каждый день), поэтому проблем быть не должно.

Я использую эту функцию для доступа к детям iFrames:

var getIframe = function (id) {
    if ($.browser.mozilla) return document.getElementById(id).contentWindow;
    return window.frames[id];
};

и просто "parent.yourParentFunction()", когда вы хотите получить доступ к функции в родительском.

Убедитесь, что родительская функция назначена объекту Window (глобальное пространство имен)

Удачи с этим:-)

В родительском фрейме может быть установлено значение document.domain, отличное от "samedomain". Обновите свойство document.domain в iframe js до значения, установленного в родительском фрейме, и оно должно работать.

Другие вопросы по тегам