【问题标题】:Is it possible to modify an external source from the <head> in an iFrame on load是否可以在加载时从 iFrame 中的 <head> 修改外部源
【发布时间】:2014-04-06 09:48:58
【问题描述】:

提前感谢您的帮助。它一直困扰着我一段时间,我相信它对于不知道如何(如果可能)修改外部位置 iframe 的头部的其他人非常有用,例如:

<iframe src="http://www.somewebsite.com/someresourceid?=123" width="500" height="700" scrolling ="yes">

这个 iframe 当然有它自己的头部和身体加载到页面中。现在是否有可能例如改变它的头部:

<script src="http://www.someotherwebsite.com/somescript.js?id=789" type="text/javascript">

所需的更改是将 ?id 从 789 更改为 456。

既然我们已经讨论过了,是否也可以完全删除这行脚本,或者完全阻止该脚本加载?

在这种情况下仅供参考,我的网站不是两者兼有,它只是:

www.website.com

最好的问候!

【问题讨论】:

  • 请阅读:Same-origin policy.
  • 我认为相关的信息与确切的问题无关。在我们的例子中,iFrame 及其所有内容在 website.com 上都可以正常加载,我们只是希望修改他们正在加载的内容,或者阻止加载特定脚本,例如潜在的恶意软件广告 .js。非常感谢您的回复,如果可以,请提供帮助。
  • @inder.gg — 您的问题本质上是“我的页面如何修改来自不同来源的页面?” ——为什么你认为同源政策无关紧要?
  • 我不是专业人士,但我相信这个页面告诉我可以向页面添加什么是跨域的。我看不到它在哪里解释了“如何”阻止或修改某段文本,这实际上会改变加载或不加载的内容。你能说得清楚一点吗,这对我一点帮助都没有。
  • @inder.gg — 同源策略不是关于“添加到”页面。它是关于以任何方式与之交互的。

标签: javascript php jquery iframe


【解决方案1】:

没有。

  1. 在 iframe 中加载页面时,您无法修改页面的 HTML。您只能在将元素添加到 DOM 后对其进行操作,此时阻止脚本执行已为时已晚。
  2. same origin policy 会阻止您访问其他来源的文档。

您最接近的方法是使用服务器端代码来复制文档、修改它,并在您控制的服务器上为其提供一个 URL,然后首先将该 URL 提供给浏览器。

【讨论】:

  • 谢谢,这很有用。所以这基本上意味着,不可能通过我页面上的 php 或 javascript/ajax/jquery 将外部 url 上 iframe 头部的 ?id=789 更改为 ?id=456? :(
  • 使用 PHP 是否可以使用答案最后一段中提到的方法。但是,您不能指示访问者的浏览器修改其他人的页面。
  • 感谢您的帮助,在这种情况下可能无法实现,因为我们更多地针对 url-rewrite/php-replaces/ajax-jquery-js-targetted-replaces-or-stops .由于 iframe 的内容是通过 JWPlayer 播放的视频。
猜你喜欢
  • 2013-05-19
  • 2017-02-08
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多