不安全的JavaScript试图用URL访问框架

Unsafe JavaScript attempt to access frame with URL

本文关键字:URL 访问 框架 JavaScript 不安全      更新时间:2023-09-26

我有一个页面与Iframe和Javascript从Iframe访问父框架的函数。页面在同一服务器上(它不是跨域脚本),我没有FF和IE的任何问题,但当我在Chrome上使用它时,我有下面的消息。

不安全的JavaScript试图访问带有URL的框架http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.StoricoApp从框架到URLhttp://samedomain: 51700/irj/servlet/prt/portal/prtroot/CRMApp73.CRMOProxy。域、协议和端口必须匹配。

如何解决这个问题?我用谷歌搜索了4个小时。我希望有人能帮助我。

编辑:代码

这是iframe页面中的JavaScript。这个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>

这是一个带有target属性的表单,用于向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>

Chrome不允许你这样做。来自Iframe的代码不能访问父代码。

首先,检查两个页面是否以完全相同的方式使用iframe的SRC attr引用,我的意思是:

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

因为有可能,即使它们在同一台机器上运行,其中一个iframe被调用为:

http://localhost:51700/irj/

和另一个:

http://MachineId:51700/irj/

或任何其他组合。

您可以通过在所有现代浏览器中使用Developer工具检查代码来检查它。

Chrome允许你调用父母的功能,如果他们在同一域(我每天都这样做),所以不应该有任何问题。

我使用这个函数来访问子iFrames:

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

和"parent. yourparentfunction()"当你想访问父类中的函数时。

检查父函数是否被分配给Window对象(全局命名空间)

祝你好运:-)

父框架可能已经设置了一个文档。域值与"sameddomain"不同。更新文档。将iframe js中的Domain属性设置为父框架中的值,这样就可以工作了。