2013-01-07 88 views
8

這個問題看起來很愚蠢,但爲了清晰起見,我需要理解這一點。瞭解iframe中的跨域問題

根據我的理解,跨域問題是當包含IFRAME的網頁的域與在IFRAME中打開的網頁的域不同時。

按照這個邏輯,IFRAME中不應該打開任何東西。

當我在我的網頁「top:9700」的IFRAME中嵌入了一個網頁「bottom:10700」時,它給出錯誤。我無法看到IFRAME中的內容。錯誤是Access denied in accessing property 'constructor'

我得到的錯誤,而訪問構造器(_1.contructor)

isc.A.Function=function isc_isA_Function(_1){ 
    if(_1==null) return false; 
    if(isc.Browser.isIE&&typeof _1==this.$a7) return true; 
    var _2=_1.constructor; 
    if(_2&&_2.$k!=null){ 
    if(_2.$k!=1)return false; 
    if(_2===Function)return true 
    } 

當底部的主頁中所含的頂部iframe中打開此腳本運行。

有什麼辦法,我可以做這個工作。我的意思是我可以設置兩個域是相同的。我沒有訪問遠程站點的腳本。

重新調整幀後重新調整一次跨域方案。如果沒有,那麼肯定遠程站點正試圖訪問IFRAME元素..我可以如何調試?

+5

並不是說您無法打開域外的網頁。你做完就無法訪問它。 – JJJ

+0

就我而言,我的網站網址是「http:// top:9700」。此頁面包含嵌入了網址「http:// botton:10700」的IFRAME。我無法看到iframe中的內容。錯誤是「訪問屬性中的訪問被拒絕'構造函數'」...它怎麼沒有工作? – user1522820

+0

[同源](http://en.wikipedia.org/wiki/Same_origin_policy)包括端口和協議 – mplungjan

回答

8

跨域問題與iframe之間的通信有關。您始終可以嵌入任何iframe,但如果域名不同,iframe就無法互相交互,例如執行JS,修改DOM等。

HTML5提供了一個sandbox property,它重新啓用了跨域iframe交互的特定功能。小心,它可能是危險的。

+0

如果我在顯示它之後調整幀大小(通過代碼),是否將其視爲跨域通信? – user1522820

+0

沒有。您在最上面的窗口中調整DOM元素的大小。這與任何一種溝通無關。 – oleq

+1

我覺得這個問題。問題出在遠程站點的腳本中。它試圖在框架內對齊自己。要做到這一點,它正在訪問框架的頁面元素...感謝大家幫助我 – user1522820

3

頁面xyz.com加載到abc.com上託管的iframe是正常行爲。但是,您無法通過父母abc.com的代碼更改任何內容或訪問其內容。

希望這有助於。

+0

感謝您的回覆。我現在明白了。就我而言,我並不想訪問任何框架的內容。所以,也許它是遠程腳本試圖訪問我的IFRAME的包含頁面。我如何調試,訪問什麼並修復它? – user1522820