【问题标题】:Setting iframe `src` in Javasscript throws 'Permission Denied' error in Internet Explorer在 Javascript 中设置 iframe `src` 会在 Internet Explorer 中引发“权限被拒绝”错误
【发布时间】:2012-10-19 01:34:54
【问题描述】:

我在一个页面上有 4 个 iframe,当每个 iframe 加载时,我将它们的 src 设置为 ""(空)。单击页面集中的不同链接将src 指向使用jQuery 的不同URL。这在 FF、Chrome、Safari 等中运行良好,但 IE 给了我:

Permission Denied - jquery.js?1350498802, line 103 character 430

从我发现这是因为如果一个安全特性 IE 可以防止 XSS 攻击。问题是我在 iframe 中加载的页面与它们正在加载的页面位于不同的域中。我无权访问 iframe 从中获取 src 的域中的代码,那么无论如何我可以加载这些页面而不会出现此错误吗?

如果需要,我可以发布代码,但没有什么复杂的,它是一个空 iframe,直到单击链接,此时 iframe 的 src 使用 $("#iframe").attr("src", link); 更改。

提前致谢!

【问题讨论】:

标签: jquery internet-explorer iframe xss


【解决方案1】:

不要使用 jQuery 来执行这个简单的任务,而是使用 HTML。

<a target="myIframe" href="http://www.google.com">Google</a>
<iframe id="myIframe" src="about:blank"></iframe>

【讨论】:

  • 我会,但 iframe 需要加载的是动态的,它们循环遍历一组值,每个值都有自己的 URL。如果我只需要一个链接,那就完美了:)
  • 为了动态改变内容,我使用了document.getElementById('myIframe').contentDocument.write('hi'),但它似乎只有在我将iframe src设置为about:blank时才有效
【解决方案2】:

您的问题可能与此有关。仔细检查您设置 iframe url 的方式

change iframe source in ie using javascript

希望这会有所帮助。

【讨论】:

  • 您在这里所做的只是发布指向其他人答案的链接。将其用作自己的似乎并不公平。
  • @Lix 拥有 21 名代表,我怀疑他是否还可以发布 cmets。
  • @kev - 毫无疑问!要求是 50 次,但答案是为了回答问题。不要发布可能重复的链接。这只是 HRN 的第一个答案帖子。我相信他们很快就能发表评论。在此之前,请仅使用“发布答案”按钮发布您自己的答案,或者至少发布您自己针对此特定问题量身定制的版本。
  • 对此感到抱歉。我正在努力学习这个网站。我并没有声称这个答案是我的。我前段时间读过这个并记得,所以只是想分享相同的链接。我将进行更多研究,看看如何将人们重定向到类似的主题。
【解决方案3】:

通常要解决此跨域问题,您可以创建所谓的代理页面。基本上,您所做的是将 iframe 的 src 设置为您自己域中的页面(例如,我们称之为 proxyFrame.php)。

proxyFrame.php 的代码中,您将从要加载到 iframe 中的实际页面中获取内容。在php中你可以使用file_get_contents()

您没有指定您使用的是哪种后端代码,但我很确定任何语言都有类似的方式从 URL 中获取内容。

【讨论】:

  • 好吧..假设您只想从页面获取内容以进行显示。如果页面是交互式的,有 POST、ajax 请求等怎么办?
【解决方案4】:

我最终将src 更改为我们需要的域,并删除了所有将src 设置为"" 的语句,从而解决了问题。感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2014-10-19
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多