2010-10-30 36 views
9

我必須在頁面的iframe中包含一個外部白標籤網站。外部網站上有很多頁面,它們的高度差別很大。使用外部URL獲取iframe的高度

我需要調整我的iframe的高度以適應此情況。

我可以獲取加載到iframe中的第一頁的高度(使用PHP),但沒有辦法獲取後續頁面高度,因爲沒有辦法知道url /位置在iframe中發生了什麼變化。

由於這是iframe中的外部URL,因此通常存在安全限制,因此所有解決方案都必須來自父框架。解決方案必須至少在FF和IE上可行。

唯一能想到的是測試滾動條是否在iframe中可見,但在這些情況下這似乎是不可能的。

如果任何人都可以證明我錯了,或者有任何其他javascript/ajax/php跨瀏覽器解決方案,我很樂意聽到它。

+0

看到這個問題:http://stackoverflow.com/questions/466672/set-iframe-to-height-of-content-for-remote-content – Zach 2010-11-01 21:40:32

+0

是的,我看到了這個問題。但是我在這裏強調說「所有的解決方案都必須來自父框架」。我見過的大部分建議都涉及遠程頁面上的某種編碼。 – Owen 2010-11-02 13:10:56

回答

8

它是不可能這樣做是因爲瀏覽器的安全模式。如果可能的話,這將是一個安全問題,必須修復。

儘管讓嵌入網站在嵌入頁面時知道第三方網頁的高度似乎是無害的,但這可能會泄露信息到瀏覽器用戶想要保密的嵌入網站。例如,http://www.facebook.com/根據您是否登錄而呈現不同的情況,因此如果我的網站可以計算出<iframe src="http://www.facebook.com/">的高度,那麼我可以計算出您是否是Facebook用戶,您可能不希望我知道。

信息泄露將類似於臭名昭着的CSS History Leak,因爲它會通過「鏈接」到該網站來揭示用戶與第三方網站的關係信息(在這種情況下,使用iframe而不是鏈接) 。瀏覽器供應商不得不插入CSS歷史泄漏,所以我懷疑如果你能夠在任何瀏覽器中在iframe中渲染第三方站點的高度,那麼供應商也必須解決這個問題。

泄漏的信息可以是任何可以從用戶使用其cookie(即使在不同域的頁面內的iframe中呈現時將發送該瀏覽器發送)呈現給用戶的頁面高度的任何事物。具體風險完全取決於嵌入式網站遭到「攻擊」的性質。例如。我可以通過獲取https://stackoverflow.com/reputation的高度來了解有人訪問我的網站時有多少計算器活動,這對於不同的用戶而言是不同的。

+0

嗯..我和5億其他人;-)你所擁有的只是匿名信息,即某人已登錄。 – Owen 2010-11-04 10:05:06

+3

不完全。我知道您,查看我網頁的人已登錄。使我有機會更好地針對您的網上釣魚攻擊。我可以祕密計算出你使用的37個不同銀行網站中的哪一個,而不是臉書。請注意,泄露的信息與CSS歷史泄漏相似,這引起了相當大的爭議並得到修復,請參閱http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-泄漏/如果你不熟悉那個。 – Day 2010-11-04 15:56:08

+0

正在控制父框架,您已經知道加載到iframe中的第一個url(Facebook或銀行)。沒有祕密在那裏開始。這與CSS歷史泄漏(感謝鏈接)不同,但與知道用於退出站點的超鏈接相比更具可比性。您可能會得到的唯一「額外」是用戶在遠程站點上有一個登錄名,這對您來說並不令人驚奇,因爲他們正在使用您提供給iframe的url。換句話說,無論如何,這些信息都是一個合理的猜測。 – Owen 2010-11-06 13:41:30