Cross Domain JavaScript parent location setting firefox error (Cross Domain JavaScript parent location setting firefox error)


問題描述

Cross Domain JavaScript parent location setting firefox error (Cross Domain JavaScript parent location setting firefox error)

Here is the case:
page A contains iframe B, B contains iframe C, A and B are under the same domain, C under another. 
C tries to reset parent B's location with extra information following "#" to solve cross domain communication using Fragment Id Messaging. 

IE6/7/8 just works fine with this case, while Firefox blocks parent.location setting with error message [Access to property denied" code: "1010]. But if B is the top window, meaning there is no A, Firefox lives too.

It's strange to me... Could you guys please help?

Thank you!

‑‑‑‑‑

參考解法

方法 1:

Historically, any window could change the location of any other window.  This turned out to be a problem because, among other things, it meant embedding a login iframe in a window was unsafe (because then a malicious site could replace the login iframe with a spoofed version).  Over time further restrictions have been applied to location changes to browser windows, until now, when HTML5 and most browsers have reached common agreement on the ancestor policy.  In a nutshell, paraphrasing the HTML5 specification, a window A can change the location of another window B iff:

  • the locations of A and B have the same origin, which is to say they have the same scheme, host, and port (http, stackoverflow.com, 80 for example), or
  • B is a top‑level window, and A is a window in a frame nested at some depth within B (direct child, child of a child, etc.), or
  • B is a window opened using window.open and A can change the location of the window that opened B (so B is a popup opened by A, by a popup window opened by A, or at greater depth), or
  • B isn't a top‑level window, but its parent window, or its parent's parent window, or at some similar amount of parentage the locations of that window and A are same‑origin

(Same origin is more complicated than this, but the embedded description above catches its essence and covers the most common cases.)

Under this policy, C may change the location of A, and A may change the location of B or C, but C may not change the location of B.  If you need to work around this, then you should change your page A's location to something that changes B as appropriate; alternately, you could ask your page B to change its own location.

Hopefully that's informative, if not necessarily helpful.  The browser security model wasn't so much designed as evolved, and only with recent work in HTML5 is it really being precisely nailed down to address these cross‑browser inconsistencies.

All that said, I'm surprised IE7 and IE8 work for you ‑‑ it was my understanding the above policy was primarily based upon the policy IE7 implemented.

方法 2:

From C you can access B's window using window.top.

Try, var B = window.top; B.location = "...";

(by Xiao XuJeff WaldenLuca Matteis)

參考文件

  1. Cross Domain JavaScript parent location setting firefox error (CC BY‑SA 3.0/4.0)

#iframe #javascript #firefox #cross-domain






相關問題

IE6 iframe 渲染問題 (IE6 iframe rendering issue)

Cross Domain JavaScript parent location setting firefox error (Cross Domain JavaScript parent location setting firefox error)

Перанакіраванне ад даччынага акна да бацькоўскага ў iframe з дапамогай javascript (OAuth) (Redirecting from child window to parent to a iframe using javascript (OAuth))

Tương tác với trình phát youtube được nhúng của học viện Khan (Interacting with Khan academy's embedded youtube player)

創建文件並將其加載到 iframe (creating file and load it in iframe)

Firefox 無法訪問同一域上的 iframe 打印 (Firefox can't access iframe print on the same domain)

如何在特定情況下處理 iframe。如何處理 iframe 內容? (How to handle iframe in particular situation. How to handle iframe contents?)

使用 jQuery 按鈕單擊更改 iFrame 的 URL? (Change URL of iFrame with jQuery button click?)

如何使網頁只允許 iframe 訪問 (How to make web page only allowed accessed by iframe)

為什麼 Internet URL 在 iframe 標記中不起作用? (Why is an Internet URL not working in an iframe tag?)

Word 2007 文件啟動新窗口而不是顯示內聯 (Word 2007 files launching new window instead of displaying inline)

有沒有辦法在 <IFrame> 中嵌入網站,如果它拒絕嵌入? (Is there any way to embed a website in <IFrame>, If it is denying to be embedded?)







留言討論