将iframe设置为远程内容的内容高度

将iframe设置为远程内容的内容高度,iframe,height,xss,Iframe,Height,Xss,如何使iframe 100%适合您的内容(使用JavaScript)的问题已经在论坛上得到了回答。。。用于仅显示同一域内容的iFrame 我的问题:当iframe src属性用于包含框架的页面域之外的页面时,是否可以调整iframe的大小以适应内容?围绕跨站点脚本的浏览器安全功能阻止我访问iframe的文档对象 我正在寻找任何创造性的解决方案。我的想法之一是以某种方式检测iframe上的滚动条是否可见,并逐渐增加高度,直到它们不可见为止。不幸的是,我也找不到任何方法来检测可见的滚动条。想法 请注

如何使iframe 100%适合您的内容(使用JavaScript)的问题已经在论坛上得到了回答。。。用于仅显示同一域内容的iFrame

我的问题:当iframe src属性用于包含框架的页面域之外的页面时,是否可以调整iframe的大小以适应内容?围绕跨站点脚本的浏览器安全功能阻止我访问iframe的文档对象

我正在寻找任何创造性的解决方案。我的想法之一是以某种方式检测iframe上的滚动条是否可见,并逐渐增加高度,直到它们不可见为止。不幸的是,我也找不到任何方法来检测可见的滚动条。想法

请注意,我正在寻找客户端解决方案

答复:


戴夫 问题仍然存在-我无法提前知道远程文档的高度,因此无法从数据库或查询字符串值设置它


杜斯福
CSS中iframe上的100%不会将其设置为iframe内内容的100%,而是相对于页面或包含元素(即div或其他内容)。

听起来您正试图解决一个出于合理原因而设置的安全功能

是否必须通过脚本调整大小?您可以重定向到一个页面,其中iframe的大小来自查询字符串、数据库或配置文件等

当iframe src属性用于包含框架的页面域之外的页面时,是否可以调整iframe的大小以适应内容

可以绕过跨站点的限制,将iframe设置为其内容的高度,但要使其正常工作可能有点尴尬

解决方案涉及到绕过安全模型,将iframed内容本身作为一个页面放在与父页面相同的服务器上,它可以与父页面进行通信。我以前回答过一个类似的问题,其中详细介绍了设置的细节


对所描述的方法的警告是,您必须有方法将iframe内容自身发送到父服务器上的iframe页面。当iframed内容作为站点之间约定的合作关系的一部分存在时,这通常是可以实现的,但YMMV。

这是理论性的,因为我没有测试它:

1) PHP将远程页面保存到 本地html文件使用
文件\u获取内容()
或使用CURL。2) Javascript将本地文件加载到 iframe -现在是本地问题,安全问题不适用

如果存在javascript变量或会话变量(无法从远程内容中提取),您至少可以使用此技术查询本地文件的文档高度,相应地设置iframe,然后将远程URL加载到调整大小的iframe中

Cavat:您无法知道远程页面中页面更改的URL,因此只能在第一个页面上使用此技术。如果远程页面的高度都相同,这没有问题。

(我的答案是)

由于浏览器的安全模型,如果不对正在构建的页面进行某种控制,则不可能执行此操作。如果可能的话,这将是一个安全问题,必须加以解决

虽然让嵌入站点知道嵌入到页面中的第三方网页的高度似乎是无害的,但这可能会将浏览器用户希望保密的信息泄漏到嵌入站点。例如,根据您是否登录,呈现方式会有所不同,因此如果我的网站可以计算出
的高度,那么我就可以计算出您是否是facebook用户,这可能是您不想让我知道的


信息泄漏类似于浏览器供应商不得不堵塞的臭名昭著的漏洞。

不是最好的解决方案,但您可以尝试:

javascript编写iframe,在iframe应用程序中设置url中的当前高度#h700,用于700px等;然后使用一个循环来侦听主机站点“在javascript中”的更改,以读取src=“url#h700”,并据此设置iframe的高度