眾所周知,ie有個安全策略叫「同源策略」,對同協議、同網域名稱、同埠號的訪問沒有限制,但凡有乙個不同,ie會認為這不是同源,拒絕相互訪問。但是我們日常工作中可能會出現某些情況需要突破這個「同源策略」。
樓主我碰到的問題是,在乙個http:中有個iframe,裡面src是指向https:在自適應高度的js**裡會將dd模組test.jsp的高度去跟cc模組中main.jsp的高度來作判斷,動態改變main.jsp裡iframe的高度。另外除了自適應高度,還有一些別的功能需要拿到最外層main.jsp裡的一些dom。因為ie的同源策略,使用document.parentwindow.parent.document.....這種方式是行不通的。
模型:
解決方案:採用**頁面來處理。查過一些資料,發現此辦法可以處理任何跨協議、跨網域名稱、跨埠的攔截。
原理:子頁面test.jsp需要將值傳到**頁面proxy1.jsp,然後由proxy1.jsp裡的js來控制處理main.jsp裡的dom等。因為main.jsp 與proxy1.jsp 是「同源」,可以相互訪問不受限制。
模型:
思路就是這樣,這只是單向通訊,由test.jsp的某些param來改變main.jsp的方式。
test.jsp
proxy1.jsp
/>
如果是雙向通訊,有兩種模式,具體看專案情況。
雙向模型:
原理:1. 子到父頁面原理同上。
2.父到子頁面。在proxy1.jsp中可以獲取到最外層main.jsp的dom相關值param2 ,傳給proxy2.jsp,proxy2.jsp再通過js將值傳給test.jsp。
**:在上面的基礎上,增加proxy1.jsp裡的js:onload body時增加iframe,src=dd/proxy2.jsp。同時獲取到main.jsp裡要傳給test.jsp的引數param2,然後放到url裡傳給proxy2.jsp。
proxy2.jsp在載入時,通過scriptlet獲取到url裡的引數param2,並放入到proxy2.jsp的文字框裡。js再取這個文字框就獲得了main.jsp要傳過來的引數。此時proxy2.jsp與test.jsp是同網域名稱同協議同埠,可以互相訪問。
iframe 跨越訪問 iframe跨域訪問
js跨域是個討論很多的話題。iframe跨域訪問也被研究的很透了。一般分兩種情況 一 是同主域下面,不同子域之間的跨域 同主域,不同子域跨域,設定相同的document.domian就可以解決 父頁訪問子頁,可以document.getelementbyid myframe contentwindo...
iframe跨域訪問
子iframe使用jquery訪問父頁面時,報錯uncaught domexception blocked a frame with origin url from accessing a cross origin frame.這是跨域導致的 設host 進行網域名稱重定向,開啟c windows ...
iframe跨域資料訪問
前提 父頁面和子頁面不同域 首先是父頁面傳資料給子頁面 parent.html your browser dose not support iframes child.html 需要注意的是一定要加上http 同時統一用ip都用ip,用網域名稱都用網域名稱,用localhost都用localhost...