<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    憨厚生

    ----Java's Slave----
    ***Java's Host***

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      165 隨筆 :: 17 文章 :: 90 評(píng)論 :: 0 Trackbacks
    轉(zhuǎn):http://www.tkk7.com/soddabao/archive/2007/06/17/124809.html
    做過跨越多個(gè)網(wǎng)站的Ajax開發(fā)的朋友都知道,如果在A網(wǎng)站中,我們希望使用Ajax來獲得B網(wǎng)站中的特定內(nèi)容,如果A網(wǎng)站與B網(wǎng)站不在同一個(gè)域中,那么就出現(xiàn)了跨域訪問問題。

          Ajax的跨域訪問問題是現(xiàn)有的Ajax開發(fā)人員比較常遇到的問題。
          IE對(duì)于跨域訪問的處理是,彈出警告框,提醒用戶。如果用戶將該網(wǎng)站納入可信任網(wǎng)站,或者調(diào)低安全級(jí)別,那么這個(gè)問題IE就不會(huì)在提醒你。  
             FireFox等其它非微軟的瀏覽器遇到跨域訪問,則解決方案統(tǒng)一是拒絕訪問。
             有 人說,IE是主流瀏覽器,只要它能正常使用就好了。此言差已,IE雖然能夠處理,但是是有前提的,要么用戶不厭其煩地在頁面彈出警告框之后點(diǎn)擊是(點(diǎn)擊否 就不執(zhí)行該Ajax調(diào)用了),要么用戶將該網(wǎng)站納入可信任站點(diǎn)。這兩種做法,在企業(yè)管理系統(tǒng)的應(yīng)用中倒是比較常見,因?yàn)橄到y(tǒng)管理員可以以行政手段保證用戶 的行為。但是對(duì)于互聯(lián)網(wǎng)上的網(wǎng)站或者門戶開發(fā),這種做法則不行。
             最近遇到了這個(gè)問題,需要在跨域訪問結(jié)束之后完成使主窗口出現(xiàn)一些特效,搜索了一些資料,通過不斷嘗試以及在不同瀏覽器中進(jìn)行兼容性測試,找到了幾個(gè)可行的方案:
             1、 Web代理的方式。即用戶訪問A網(wǎng)站時(shí)所產(chǎn)生的對(duì)B網(wǎng)站的跨域訪問請(qǐng)求均提交到A網(wǎng)站的指定頁面,由該頁面代替用戶頁面完成交互,從而返回合適的結(jié)果。此 方案可以解決現(xiàn)階段所能夠想到的多數(shù)跨域訪問問題,但要求A網(wǎng)站提供Web代理的支持,因此A網(wǎng)站與B網(wǎng)站之間必須是緊密協(xié)作的,且每次交互過程,A網(wǎng)站 的服務(wù)器負(fù)擔(dān)增加,且無法代用戶保存session狀態(tài)。
             2、on-Demand方式。MYMSN的門戶就用的這種方式,不過 MYMSN中不涉及跨域訪問問題。動(dòng)態(tài)控制script標(biāo)記的生成,通過修改script標(biāo)記的src屬性完成對(duì)跨域頁面的調(diào)用。此方案存在的缺陷 是,script的src屬性完成該調(diào)用時(shí)采取的方式時(shí)get方式,如果請(qǐng)求時(shí)傳遞的字符串過大時(shí),可能會(huì)無法正常運(yùn)行。不過此方案非常適合聚合類門戶使 用。
             3、iframe方式。查看過醒來在javaeye上的一篇關(guān)于跨域訪問的帖子,他提到自己已經(jīng)用iframe的方式解決 了跨域訪問問題。數(shù)據(jù)提交跟獲取,采用iframe這種方式的確可以了,但由于父窗口與子窗口之間不能交互(跨域訪問的情況下,這種交互被拒絕),因此無 法完成對(duì)父窗口效果的影響。
             4、用戶本地轉(zhuǎn)儲(chǔ)方式:IE本身依附于windows平臺(tái)的特性為我們提供了一種基于 iframe,利用內(nèi)存來“繞行”的方案,即兩個(gè)window之間可以在客戶端通過windows剪貼板的方式進(jìn)行數(shù)據(jù)傳輸,只需要在接受數(shù)據(jù)的一方設(shè)置 Interval進(jìn)行輪詢,獲得結(jié)果后清除Interval即可。FF的平臺(tái)獨(dú)立性決定了它不支持剪貼板這種方式,而以往版本的FF中存在的插件漏洞又被 fixed了,所以FF無法通過內(nèi)存來完成暗渡陳倉。而由于文件操作FF也沒有提供支持(無法通過Cookie跨域完成數(shù)據(jù)傳遞),致使這種技巧性的方式 只能在IE中使用。
             5、我自己用于解決這類問題的方式:結(jié)合了前面幾種方式,在訪問A網(wǎng)站時(shí),先請(qǐng)求B網(wǎng)站完成數(shù)據(jù)處理,再根 據(jù)返回的標(biāo)識(shí)來獲得所需的結(jié)果。這種方法的缺點(diǎn)也很明顯,B網(wǎng)站的負(fù)載增大了。優(yōu)點(diǎn),對(duì)session也實(shí)現(xiàn)了保持,同時(shí)A網(wǎng)站與B網(wǎng)站頁面間的交互能力 增強(qiáng)了。最重要的一點(diǎn),這種方案滿足了我的全部需要.



    posted on 2009-02-17 14:23 二胡 閱讀(162) 評(píng)論(0)  編輯  收藏 所屬分類: web系統(tǒng)開發(fā)
    主站蜘蛛池模板: 亚洲欧洲免费无码| 91成人免费福利网站在线| 免费无码黄网站在线观看| 国产AV无码专区亚洲AV麻豆丫| 亚洲欧洲国产成人精品| 无码人妻一区二区三区免费手机| 免费大片在线观看网站| 中文字幕免费人成乱码中国| 亚洲婷婷在线视频| 国产一级高清视频免费看| 日韩免费的视频在线观看香蕉| 国产一区二区三区免费视频| 国色精品va在线观看免费视频| 国产大片91精品免费观看男同| 亚洲国产成人99精品激情在线| 亚洲精品免费在线观看| 亚洲色无码国产精品网站可下载| 久久久久久久免费视频| 国产亚洲蜜芽精品久久| 亚洲午夜未满十八勿入| 国产免费私拍一区二区三区| 91精品手机国产免费| 一级一看免费完整版毛片| 国产亚洲精品成人AA片| 亚洲av无码一区二区三区不卡 | 国产成人精品亚洲精品| 亚洲电影日韩精品 | 日韩a级无码免费视频| 狠狠色伊人亚洲综合网站色 | 亚洲第一区精品日韩在线播放| 亚洲av无码av在线播放| 国产精品亚洲A∨天堂不卡| 波多野结衣久久高清免费| 女人体1963午夜免费视频| 男女啪啪免费体验区| 亚洲综合一区国产精品| 亚洲美女视频一区二区三区| 国产亚洲精品自在线观看| 日本高清色本免费现在观看| 99视频全部免费精品全部四虎| 亚洲AV色吊丝无码|