如何用opener hack方式實現IE6,7完美跨域
分享 2012.03.23 瀏覽次數:21902次
有時我們做一個項目時,有需要跨域請求和處理一些大數據量得數據,對于服務端提交的數據非常的之大,get的URL長度限制滿足不了需求,又由于跨域的影響,一直很頭痛數據傳輸的問題。于是乎,上網搜了搜一些跨域的解決方案,無非了iframe嵌iframe,通過window.name或者hash,做跳板,都受到url長度的限制,不是很理想。我們都知道在HTML5中,提供了一種postMessage的消息機制,可以在不同域的頁面上,互相通過window.postMessage(datastring,’limitDomain’)的方式傳遞消息。在需要觸發(fā)的頁面注冊onMessage事件,event的data屬性就是傳遞datastring文本。再配合老道的JSON.parse就可以完美的傳遞json格式的對象了。可惜的是目前PostMessage只在IE8,FF和Chrome現版本提供了實現。對于老版本的IE6,7沒有提供實現。
于是在google搜索的時候,無意中發(fā)現某高人的Blog提供了一種稱之為IE6,7 opener hack的方式實現跨域,據說是google的工程師率先發(fā)現的這個bug,fackbook的登陸頁面就是利用了這個bug實現了postMessage的跨域。
可惜,google了半天,詳細資料基本找不到,也沒有找到一個具體的例子,于是自己搗鼓了一下,寫了個例子,放上來。
下面我們來看下,如何利用這個bug的例子
hosts配置
1: 127.0.0.1 www.a.com
2: 127.0.0.1 www.b.com
test.htm
1:<html>
2:<body>
3:<iframeid="a"src="http://www.b.com/test1.htm">iframe>
4:<script>
1:
2:var i=document.getElementById('a');
3: i.contentWindow.opener={
4: dd:function(str){
5:var div=document.createElement('div');
6: document.body.appendChild(div);
7: div.innerHTML=str;
8: }
9: }
10: setTimeout(function(){
11: opener.bb('bbbbbbb');
12: },300)
13:
script>
5:body>
6:html>
test1.htm
1:<html>
2:<body>
3:
4:<script>
1:
2: window.opener.dd('aaaaaaaaa');
3: parent.opener={
4: bb:function(str){
5:var div=document.createElement('div');
6: document.body.appendChild(div);
7: div.innerHTML=str;
8: }
9: }
script>
5:body>
6:
7:html>
我們可以看到,在IE6,7下,只要重置了window對象的opener為一個{}對象,在父頁面設置了iframe的window.opener為一個{}之后,在iframe里面就可以通過opener調用parent的方法,在iframe重置parent.opener為一個{}對象之后,在parent就可以調用iframe的方法。
*還有一種說法是可以設置opener為function(){},通過new opener()來調用
總結,通過IE6,7的hack,我們可以比較完美的實現postMessage在各大主流瀏覽器的兼容,以后跨域又多了一項利器。不過比較遺憾的事,重置opener之后,對于window.open打開的窗口,就不能很好的操作了。
杭州網站建設 相關閱讀:Chrome瀏覽器全球份額首次超過IE 但僅保持一天
- PREV:分享一個可以讓DIV實現居中齊的方法
- NEXT:我們怎么去看待企業(yè)網站推廣
-
杭州網站制作的時間周期:不同類型項目需要多久
日期:2026-02-25瀏覽次數:1436次
-
杭州網站建設公司:集團網站建設中的SEO關鍵切入點
日期:2026-02-25瀏覽次數:1469次
-
杭州高端網站定制:醫(yī)院門戶網站制作的三種主流方式
日期:2026-02-25瀏覽次數:1437次
-
杭州高端網站定制:在行業(yè)洞察與用戶聲音之間尋找平衡
日期:2026-02-06瀏覽次數:3639次
-
品牌網站制作有幾大類別呢?——杭州網站制作公司的專業(yè)解析
日期:2026-02-06瀏覽次數:3555次
相關新聞
整合同類新聞,相關新聞一手掌握
-
衡州餐飲行業(yè),應不應該進行衡水app開發(fā)?
日期:2020-11-04瀏覽次數:15759次
-
衡水定制app后臺開發(fā)的利弊有哪些
日期:2020-11-04瀏覽次數:15214次
-
衡水做網站,如何做事半功倍?
日期:2020-09-27瀏覽次數:15501次
-
衡水網站制作中的安全保障
日期:2020-09-25瀏覽次數:14909次
最新新聞
與互聯(lián)網同行,實時掌握網建行業(yè)最新動態(tài)
-
杭州網站制作公司如何抓住用戶視線
日期:2020-09-02瀏覽次數:15716次
-
杭州網站建設,簽訂合同要了解這些主要內容
日期:2021-01-18瀏覽次數:16881次
-
杭州建站公司如何制作精致高端的網站?
日期:2021-06-01瀏覽次數:16851次
-
杭州網站制作,如何避免錯誤?
日期:2021-07-30瀏覽次數:17441次
-
如何搭建杭州營銷型網站達到最優(yōu)化效果?
日期:2021-12-03瀏覽次數:17148次
隨機新聞
新聞新動態(tài),您需要的新聞管家
洞悉市場趨勢演變讓傳播回歸社會
免費獲取網站建設與網絡推廣方案報價
-
關于我們
杭州帷拓科技有限公司,是一家新型的全案網絡開發(fā)公司,作為以互聯(lián)網高端網站建設、APP開發(fā)、小程序開發(fā)為核心的專業(yè)網絡技術服務供應商,帷拓科技致力于全面分析市場環(huán)境、衡量與預測市場需求、整合區(qū)別于行業(yè)競爭對手的絕對優(yōu)勢,結合品牌理念深度挖掘項目優(yōu)勢和產品價值,提升客戶品牌認知、認可度。
-
我們的客戶
帷拓科技歷經十年沉淀,與國內外上千家客戶達成合作關系,其中穩(wěn)定合作的公司有:浙江華為、浙江移動、浙江5G產業(yè)聯(lián)盟、浙江省社科院、綠城足球俱樂部、娃哈哈雙語學校、健康中國杭州峰會、科雷機電等,帷拓科技始終堅持“帷有專業(yè),才能拓展無限”的服務理念,堅持“認真堅持細節(jié)”的優(yōu)質服務理念,不斷完善自身,成就企業(yè),最終實現共贏。
-
我們的業(yè)務
帷拓科技主營業(yè)務范圍包含互聯(lián)網高端網站建設、APP開發(fā)、小程序開發(fā)、商城網站建設、公眾號運營以及數字營銷等,涵蓋了服務、房產、數碼、服裝、物流貿易等行業(yè),根據品牌現狀,為每個客戶量身定制項目整體服務方案,以敏銳的市場洞察力、創(chuàng)新的市場策劃能力,全面把握市場變化,為客戶實現從企業(yè)到消費者的價值轉換。