国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 景德镇市| 六枝特区| 汝州市| 旬邑县| 兴义市| 武汉市| 蒙城县| 江口县| 疏勒县| 太仆寺旗| 钦州市| 涿鹿县| 澳门| 阆中市| 彭州市| 明光市| 崇左市| 七台河市| 泰州市| 靖州| 聂荣县| 梨树县| 罗江县| 富阳市| 桂东县| 襄汾县| 定日县| 屏边| 隆化县| 朝阳市| 牡丹江市| 霍林郭勒市| 措勤县| 揭东县| 安阳县| 丹凤县| 盐山县| 东港市| 临漳县| 新营市| 惠水县|