国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

AJAX的阻塞及跨域名解析

2024-09-01 08:29:40
字體:
供稿:網(wǎng)友
阻塞的AJAX請求

  我們先來證實(shí)一下請求的阻塞情況吧。我們使用如下的代碼:

連續(xù)發(fā)起三個(gè)請求

function simpleRequest()
{
   var request = new XMLHttpRequest();
   request.open("POST", "Script.ashx");
   request.send(null);
}

function threeRequests()
{
   simpleRequest();
   simpleRequest();
   simpleRequest();
}
當(dāng)執(zhí)行threeRequests時(shí)就會連續(xù)發(fā)出3個(gè)相同域名的請求,還是通過統(tǒng)計(jì)圖表來查看阻塞的效果,如圖:
點(diǎn)擊在新窗口中瀏覽此圖片
每個(gè)請求需要花費(fèi)1.5秒的時(shí)間。很明顯,第三個(gè)請求必須等到第一個(gè)請求結(jié)束之后才能執(zhí)行,因此總共需要進(jìn)行3秒多鐘才能執(zhí)行完畢。我們要改變的就是這個(gè)狀況。

傳統(tǒng)的跨域名異步請求解決方案

  AJAX安全性的唯一保證,似乎就是對于跨域名(Cross-Domain)AJAX請求的限制。除非打開本地硬盤的網(wǎng)頁,或者在IE中將跨域名傳輸數(shù)據(jù)的限制打開,否則向其他域名發(fā)出AJAX請求都會被禁止。而且對于跨域名的判斷非常嚴(yán)格,不同的子域名,或者相同域名的不同端口,都會被認(rèn)作是不同的域名,我們不能向它們的資源發(fā)出AJAX請求。

  從表面上看起來似乎沒有辦法打破這個(gè)限制,還好我們有個(gè)救星,那就是iframe!

  iframe雖然不在標(biāo)準(zhǔn)中出現(xiàn),但是由于它實(shí)在有用,F(xiàn)ireFox也“不得不”對它進(jìn)行了支持(類似的還有innerHTML)。網(wǎng)上已經(jīng)有一些跨域名發(fā)出異步請求的做法,但是它們實(shí)在做的不好。它們的簡單工作原理如下:在另一個(gè)域名下放置一個(gè)特定的頁面文件作為Proxy,主頁面將異步請求的信息通過Query String傳遞入iframe里的Proxy頁面,Proxy頁面在AJAX請求執(zhí)行完畢后將結(jié)果放在自己location的hash中,而主頁面會對iframe的src的hash值進(jìn)行輪詢,一旦發(fā)現(xiàn)它出現(xiàn)了改變,則通過hash值得到需要的信息。

  這個(gè)方法的實(shí)現(xiàn)比較復(fù)雜,而且功能有限。在IE和FireFox中,對于URL的長度大約可以支持2000個(gè)左右的字符。對于普通的需求它可能已經(jīng)足夠了,可惜如果真要傳遞大量的數(shù)據(jù),這就遠(yuǎn)遠(yuǎn)不夠了。與我們一會兒要提出的解決方案相比,可能它唯一的優(yōu)勢就是能夠跨任意域名進(jìn)行異步請求,而我們的解決方案只能突破子域名的限制。

  那么現(xiàn)在來看看我們的做法!



優(yōu)雅地突破子域名的限制

  我們突破子域名限制的關(guān)鍵還是在于iframe。

  iframe是的好東西,我們能夠跨過子域名來訪問iframe里的頁面對象,例如window和DOM結(jié)構(gòu),包括調(diào)用JavaScript(通過window對象)——我們將內(nèi)外頁面的document.domain設(shè)為相同就可以了。然后在不同子域名的頁面發(fā)起不同的請求,把結(jié)果通過JavaScript進(jìn)行傳遞即可。唯一需要的也僅僅是一個(gè)簡單的靜態(tài)頁面作為Proxy而已。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉寿县| 昌邑市| 古浪县| 崇文区| 西畴县| 乌拉特后旗| 宜章县| 杨浦区| 循化| 隆化县| 吉水县| 文登市| 永年县| 紫阳县| 砚山县| 海门市| 恭城| 永修县| 横山县| 乐陵市| 抚州市| 阳原县| 乌什县| 布尔津县| 五常市| 旬阳县| 溧水县| 隆子县| 禹城市| 若羌县| 汶上县| 兴安县| 河北省| 长沙县| 马尔康县| 新平| 措勤县| 本溪市| 乌鲁木齐县| 浦县| 安龙县|