2012-03-30 196 views
2

假設http://a.com/foo包含<iframe src="http://b.com/bar">防止IFRAME更改父位置

有時b.com/bar將打破其框架:頂層窗口將從a.com/foo遠重定向到b.com/bar 。我不知道b.com如何做到這一點。

我認爲這是不可能的跨域iframe干擾父母,除非父母通過postMessage合作。正在改變窗口的位置免除嗎?

如果發生了這種情況,a.com如何防止此重定向?我控制a.com,但無法修改b.com。

如果這不是正在發生的事情,我如何才能找出b.com在做什麼來實現重定向?

強制b.com將自己加載到一個新窗口或破壞其對topparent對象的訪問是可以接受的。其他b.com行爲的降級可能是可以接受的。

+0

[可能感興趣的可能是這個經典問題](http://stackoverflow.com/questions/958997) – Pointy 2012-03-30 16:40:15

+0

有趣的是,儘管基本的反幀破壞204技巧在我的FF11中不起作用(所有的導航都離開了被阻止)。 – spraff 2012-03-30 16:58:39

+0

這個頁面最終會贏。即使它不能破壞你的幀攔截器,它也可以決定隱藏自己或重定向到令人反感的東西。 – Pointy 2012-03-30 17:04:41

回答

0

可能發生的事情是b.com內部的鏈接具有屬性Target ='_ parent'。 這將使窗口/ iframe父級更新。

如果您控制b.com - 確保您的所有目標都是_self。

0

如果我創建a.com/proxy.php ajax解決方案可以工作,它將使用cURL來獲取b.com。

優點:

  • 可以更改或刪除任何腳本
  • 可以調整b.com內容(預覽模式)
  • 可以繞過跨域iframe的限制

缺點:

  • b.com上的cookies/sessions贏得' T爲可用
  • b.com可能需要腳本來創建其內容的帶寬
  • 編碼的努力,使工作的HREF