【问题标题】:Search code in iframe在 iframe 中搜索代码
【发布时间】:2016-05-26 15:48:05
【问题描述】:

我想在外部网站上的 iframe 中搜索像 <div class="sender" style="display: block;"> 这样的简单字符串。

代码不工作

var target = '<div class="sender" style="display: block;">'
console.log( $( "iframe" ).contents().find('body').html().search( target ) != -1 )

因为我有错误

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://website1.com" from accessing a frame with origin "http://website2.com". Protocols, domains, and ports must match.

请问我该怎么办?

【问题讨论】:

  • 如果 iframe 位于不同的域中,那么您不能。这是不可能的。
  • 埃尔夫。但是我不想编辑代码,只读取和查找字符串。它总是相同的答案?
  • 不幸的是,是的。由于它是一个“外部域”,浏览器的安全策略开始发挥作用并阻止它。如果您可以访问两个域上的页面,则可以“修复”它。

标签: javascript jquery iframe


【解决方案1】:

看,上面写着Failed to read the 'contentDocument'

由于安全规则,您无法获取(读取)具有不同域的外部网站的任何内容,也无法对其进行编辑。

上面写着Protocols, domains, and ports must match.

【讨论】:

    【解决方案2】:

    我建议使用&lt;object&gt;&lt;/object&gt;&lt;embed&gt;&lt;/embed&gt; 或更好的解决方案是,如果您有权访问您正在访问的服务器页面,请在将其发送到客户端时在您的标头中启用跨站点脚本。 问题是这个协议、域和端口必须匹配,它加载这个 html 的唯一方法是让服务器发送适当的标头也看看这个how to block website from loading in iframe?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2012-02-09
    • 2020-05-12
    • 2022-10-16
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多