中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 網(wǎng)頁(yè)制作 > 跨域資源共享的10種方式
BigPipe:高性能的"流水線技術(shù)"網(wǎng)頁(yè) 回到列表 推薦13個(gè)網(wǎng)頁(yè)設(shè)計(jì)瀏覽器兼容驗(yàn)證工具
 跨域資源共享的10種方式

作者:正邪 時(shí)間: 2010-10-22 文檔類(lèi)型:轉(zhuǎn)載 來(lái)自:口碑網(wǎng)UED Team

第 1 頁(yè) 跨域資源共享的10種方式 [1]
第 2 頁(yè) 跨域資源共享的10種方式 [2]

window.name

window對(duì)象的name屬性是一個(gè)很特別的屬性,當(dāng)該window的location變化,然后重新加載,它的name屬性可以依然保持不變。那么我們可以在頁(yè)面A中用iframe加載其他域的頁(yè)面B,而頁(yè)面B中用JavaScript把需要傳遞的數(shù)據(jù)賦值給window.name,iframe加載完成之后,頁(yè)面A修改iframe的地址,將其變成同域的一個(gè)地址,然后就可以讀出window.name的值了。這個(gè)方式非常適合單向的數(shù)據(jù)請(qǐng)求,而且協(xié)議簡(jiǎn)單、安全。不會(huì)像JSONP那樣不做限制地執(zhí)行外部腳本。

server proxy

在數(shù)據(jù)提供方?jīng)]有提供對(duì)JSONP協(xié)議或者window.name協(xié)議的支持,也沒(méi)有對(duì)其它域開(kāi)放訪問(wèn)權(quán)限時(shí),我們可以通過(guò)server proxy的方式來(lái)抓取數(shù)據(jù)。例如當(dāng)www.a.com域下的頁(yè)面需要請(qǐng)求www.b.com下的資源文件asset.txt時(shí),直接發(fā)送一個(gè)指向www.b.com/asset.txt的ajax請(qǐng)求肯定是會(huì)被瀏覽器阻止。這時(shí),我們?cè)趙ww.a.com下配一個(gè)代理,然后把a(bǔ)jax請(qǐng)求綁定到這個(gè)代理路徑下,例如www.a.com/proxy/, 然后這個(gè)代理發(fā)送HTTP請(qǐng)求訪問(wèn)www.b.com下的asset.txt,跨域的HTTP請(qǐng)求是在服務(wù)器端進(jìn)行的,客戶端并沒(méi)有產(chǎn)生跨域的ajax請(qǐng)求。這個(gè)跨域方式不需要和目標(biāo)資源簽訂協(xié)議,帶有侵略性,另外需要注意的是實(shí)踐中應(yīng)該對(duì)這個(gè)代理實(shí)施一定程度的保護(hù),比如限制他人使用或者使用頻率。

雙向跨域

document.domain

通過(guò)修改document的domain屬性,我們可以在域和子域或者不同的子域之間通信。同域策略認(rèn)為域和子域隸屬于不同的域,比如www.a.com和sub.a.com是不同的域,這時(shí),我們無(wú)法在www.a.com下的頁(yè)面中調(diào)用sub.a.com中定義的JavaScript方法。但是當(dāng)我們把它們document的domain屬性都修改為a.com,瀏覽器就會(huì)認(rèn)為它們處于同一個(gè)域下,那么我們就可以互相調(diào)用對(duì)方的method來(lái)通信了。

FIM – Fragment Identitier Messaging

不同的域之間,JavaScript只能做很有限的訪問(wèn)和操作,其實(shí)我們利用這些有限的訪問(wèn)權(quán)限就可以達(dá)到跨域通信的目的了。FIM (Fragment Identitier Messaging)就是在這個(gè)大前提下被發(fā)明的。父窗口可以對(duì)iframe進(jìn)行URL讀寫(xiě),iframe也可以讀寫(xiě)父窗口的URL,URL有一部分被稱(chēng)為frag,就是#號(hào)及其后面的字符,它一般用于瀏覽器錨點(diǎn)定位,Server端并不關(guān)心這部分,應(yīng)該說(shuō)HTTP請(qǐng)求過(guò)程中不會(huì)攜帶frag,所以這部分的修改不會(huì)產(chǎn)生HTTP請(qǐng)求,但是會(huì)產(chǎn)生瀏覽器歷史記錄。FIM的原理就是改變URL的frag部分來(lái)進(jìn)行雙向通信。每個(gè)window通過(guò)改變其他window的location來(lái)發(fā)送消息,并通過(guò)監(jiān)聽(tīng)自己的URL的變化來(lái)接收消息。這個(gè)方式的通信會(huì)造成一些不必要的瀏覽器歷史記錄,而且有些瀏覽器不支持onhashchange事件,需要輪詢來(lái)獲知URL的改變,最后,URL在瀏覽器下有長(zhǎng)度限制,這個(gè)制約了每次傳送的數(shù)據(jù)量。

Flash LocalConnection

頁(yè)面上的雙向通信也可以通過(guò)Flash來(lái)解決,F(xiàn)lash API中有LocalConnection這個(gè)類(lèi),該類(lèi)允許兩個(gè)SWF之間通過(guò)進(jìn)程通信,這時(shí)SWF可以播放在獨(dú)立的Flash Player或者AIR中,也可以嵌在HTML頁(yè)面或者是PDF中。遵循這個(gè)通信原則,我們可以在不同域的HTML頁(yè)面各自嵌套一個(gè)SWF來(lái)達(dá)到相互傳遞數(shù)據(jù)的目的了。SWF通過(guò)LocalConnection交換數(shù)據(jù)是很快的,但是每次的數(shù)據(jù)量有40kb的大小限制。用這種方式來(lái)跨域通信過(guò)于復(fù)雜,而且需要了2個(gè)SWF文件,實(shí)用性不強(qiáng)。

window.postMessage

window.postMessage是HTML5定義的一個(gè)很新的方法,這個(gè)方法可以很方便地跨window通信。由于它是一個(gè)很新的方法,所以在很舊和比較舊的瀏覽器中都無(wú)法使用。

Cross Frame

Cross Frame是FIM的一個(gè)變種,它借助了一個(gè)空白的iframe,不會(huì)產(chǎn)生多余的瀏覽器歷史記錄,也不需要輪詢URL的改變,在可用性和性能上都做了很大的改觀。它的基本原理大致是這樣的,假設(shè)在域www.a.com上有頁(yè)面A.html和一個(gè)空白代理頁(yè)面proxyA.html, 另一個(gè)域www.b.com上有個(gè)頁(yè)面B.html和一個(gè)空白代理頁(yè)面proxyB.html,A.html需要向B.html中發(fā)送消息時(shí),頁(yè)面會(huì)創(chuàng)建一個(gè)隱藏的iframe, iframe的src指向proxyB.html并把message作為URL frag,由于B.html和proxyB.html是同域,所以在iframe加載完成之后,B.html可以獲得iframe的URL,然后解析出message,并移除該iframe。當(dāng)B.html需要向A.html發(fā)送消息時(shí),原理一樣。Cross Frame是很好的雙向通信方式,而且安全高效,但是它在Opera中無(wú)法使用,不過(guò)在Opera下面我們可以使用更簡(jiǎn)單的window.postMessage來(lái)代替。

總結(jié)

跨域的方法很多,不同的應(yīng)用場(chǎng)景我們都可以找到一個(gè)最合適的解決方案。比如單向的數(shù)據(jù)請(qǐng)求,我們應(yīng)該優(yōu)先選擇JSONP或者window.name,雙向通信我們采取Cross Frame,在未與數(shù)據(jù)提供方?jīng)]有達(dá)成通信協(xié)議的情況下我們也可以用server proxy的方式來(lái)抓取數(shù)據(jù)。

本文鏈接:http://www.95time.cn/tech/web/2010/8049.asp 

出處:口碑網(wǎng)UED Team
責(zé)任編輯:bluehearts

上一頁(yè) 跨域資源共享的10種方式 [1] 下一頁(yè)

◎進(jìn)入論壇網(wǎng)頁(yè)制作WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論

相關(guān)文章
location.hash實(shí)現(xiàn)跨域iframe自適應(yīng)
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買(mǎi)真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛(ài)的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開(kāi)發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:2/2頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共2個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說(shuō)明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專(zhuān)業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2