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

时间:2009-01-21 19:38:09

标签: iframe height xss

如何使您的iframe完全适合您的内容(使用JavaScript)的问题已在论坛上得到解答...... 仅针对来自同一域的iframe显示

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

我正在寻找任何有创意的解决方案。我的一个想法是以某种方式检测到iframe上的滚动条是可见的,并逐渐增加高度,直到它们没有。不幸的是,我找不到任何方法来检测可见的滚动条。想法?

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

对策:


戴夫

问题仍然存在 - 我不知道远程文档的高度,所以我无法从数据库或查询字符串值设置它。


dusoft

CSS中iframe的100%不会将其设置为内容内部 iframe的100%,而是相对于页面或包含元素(即div或其他内容)。< / p>

6 个答案:

答案 0 :(得分:1)

  

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

可以绕过跨站点限制并将iframe设置为其内容的高度,但让它工作起来可能有点尴尬。

解决方案涉及通过使iframed内容本身iframe与父页面位于同一服务器上的页面来解决安全模型,并与之进行通信。在here之前,我已经回答了类似的问题,其中详细介绍了设置这一切的细节。

所描述的方法的一个警告是,你必须有办法将你的iframed内容iframe取自父服务器上的一个页面。当iframed内容作为网站之间商定的合作伙伴关系的一部分时,通常可以实现,但是YMMV。

答案 1 :(得分:1)

(我对a similar question的回答)

不可能这样做是因为浏览器的安全模型没有对iframed页面的某些控制。如果可能的话,这将是一个安全问题,必须修复。

尽管嵌入网站嵌入页面时让嵌入网站知道第三方网页的高度似乎无害,但这可能会将信息泄露给浏览器用户想要保密的嵌入网站。例如,http://www.facebook.com/呈现的方式会有所不同,具体取决于您是否已登录,因此如果我的网站可以计算<iframe src="http://www.facebook.com/">的高度,那么我可以判断您是否是Facebook用户,你可能不想让我知道。

信息泄露类似于浏览器供应商必须插入的臭名昭着的CSS History Leak

答案 2 :(得分:0)

听起来你正试图解决一个有充分理由的安全功能......

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

答案 3 :(得分:0)

在CSS中使用100%怎么样?可以在iframe中禁用滚动条,但用户将无法滚动。

这是JS / XSS预防,所以克服它并尝试在服务器端提取内容并通过本地连接提供服务。

答案 4 :(得分:0)

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

  
    

1)PHP将远程页面保存为     使用本地html文件     file_get_content()或使用CURL。 2)Javascript加载本地文件     IFRAME      - 它现在是本地的,安全问题不适用。

  

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

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

答案 5 :(得分:0)

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

javascript编写iframe,在iframe app中设置url#h700中当前高度为700px等;然后使用循环在主机网站上“在javascript中”监听该更改,以阅读src =“url#h700”并设置iframe的高度。