posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

           
          解決AJAX跨域訪問一般都是通過代理服務(wù)器來解決,但是我使用coldFusion實(shí)現(xiàn)這個(gè)問題時(shí)卻遇到這樣一個(gè)錯(cuò)誤,在cfhttp標(biāo)簽使用https訪問網(wǎng)站時(shí),出現(xiàn)如下錯(cuò)誤提示:
          Connection Failure: Status code unavailable
           
          找了好久也沒找到原因,最后還是在別的幫助下發(fā)現(xiàn)這個(gè)問題。由于個(gè)問題是語言無關(guān)的,所以不敢獨(dú)享,特拿來和大家分享。
           
          為了方便說明,先做出一些定義。
          代理服務(wù)器:在AJAX可以訪問的域中,并且代理AJAX來訪問其它網(wǎng)站的服務(wù)器,
          目標(biāo)服務(wù)器:AJAX真實(shí)想想訪問的網(wǎng)址所在的服務(wù)器。
           
          我遇到的問題就是:代理服務(wù)器通過HTTPS訪問目標(biāo)服務(wù)器,但是目標(biāo)服務(wù)器的證書出于一些原因并不被信任。
           

          如何讓代理服務(wù)器相信目標(biāo)服務(wù)器的證書呢:有兩種方法
          1):一般代理服務(wù)器都持有一些可信的頂CA的證書,如果站點(diǎn)的證書被其中之一的證書簽名過了,那么代理服務(wù)器就會(huì)相信這個(gè)證書。不過被這些頂給證書簽名是要收費(fèi)的。(如何查看證書被哪些CA給簽名了,可以參考備注)
          2):你個(gè)人確定這個(gè)網(wǎng)站是沒有問題的(比如我們訪問公司自己的網(wǎng)站時(shí)),然后手工的告訴代理服務(wù)器,這個(gè)證書是可信的,那么以后被這個(gè)證書簽名過的證書對這個(gè)代理服務(wù)器也是可信的了。
          http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&file=00000272.htm
              有一點(diǎn)要說明的,操作系統(tǒng)在安裝的時(shí)候,已經(jīng)安裝了一些可信的證書(如何查看OS已經(jīng)安裝了哪些證書,可以參考備注),所以在通過瀏覽器訪問網(wǎng)站的時(shí)候,如果網(wǎng)站的證書已經(jīng)被這些證書其中之一簽名過了,瀏覽器也會(huì)相信這個(gè)網(wǎng)站的證書。否則瀏覽器會(huì)詢問你,這個(gè)證書有問題,你是否相信這個(gè)證書。
           
              按照上面的URL我給服務(wù)器添加證書后,發(fā)現(xiàn)還是不行。最后證書確實(shí)是被驗(yàn)證通過了,但是證書是給指定的域名使用的,但是我在訪問這個(gè)網(wǎng)站時(shí),使用的IP地址,不是域名,所以服務(wù)器還是不相信這個(gè)網(wǎng)站。就好比:你有一張身份證,身份證確實(shí)是真的,但是你拿到的是別人的身份證。
              通過查看證書,發(fā)現(xiàn)證書被頒發(fā)給如下域*.qa.webex.com(如何查看證書被頒發(fā)給哪些域名可以參考備注)。但之前我在code時(shí),AJAX是直接使用的目標(biāo)服務(wù)器的IP地址,不是域名。所以最后目標(biāo)服務(wù)器無法被信任。這就好比,你明明拿著身份證去登機(jī),雖然身份證是真的,但你同時(shí)要表明你就是身份證上的那人,你要是整容整的太大了,人家肯定不認(rèn)你。
              最后解決這個(gè)問題的辦法:在代理服務(wù)器上的HOST文件里面添加一行記錄,把felix.qa.webex.com域名與目標(biāo)服務(wù)器的IP關(guān)連起來。
           
              總結(jié):要用代理實(shí)現(xiàn)AJAX跨域訪問遇到HTTPS協(xié)議時(shí),首先要目標(biāo)站點(diǎn)的證書被代理服務(wù)器信任,其次就是訪問的URL處于,證書頒發(fā)對象下面,不要使用IP地址這樣的方法來訪問。
           
           
           
          本文章首發(fā)于 http://blog.OpenJ.cn

          備注:
          1、如何查看證書被哪些CA,或者是其它證書簽名?
           通過瀏覽器(IE)打開對應(yīng)的HTTPS網(wǎng)站。
           雙擊鎖形圖標(biāo)(如果是IE6,這個(gè)圖標(biāo)應(yīng)該在右下角的狀態(tài)欄)
           點(diǎn)擊證書路徑,就可以看到這個(gè)證書的上級,以及上級的上級。


          2、證書可以給哪些網(wǎng)站使用?
           備注1已經(jīng)說明了如何查看證書,打開證書,點(diǎn)擊常規(guī):
           證書頒發(fā)給:*.qa.webex.com

          3、如何查看OS已經(jīng)安裝了哪些證書?
           IE->工具->Internet選項(xiàng)->內(nèi)容->證書
           這時(shí)你會(huì)看到很多Tab,不同的Tab對應(yīng)不同的證書類型,我大概的看了一下,沒有100個(gè),也有幾十個(gè)。在Windows下,F(xiàn)irefox好像并不使用OS的證書,而是使用自己安裝時(shí)帶的證書,以前好像看過,但寫此文章時(shí)沒有找到,也沒想到測試辦法。
           
           正是因?yàn)樽C書一般是OS安裝的,所以可以看到有的商業(yè)CA會(huì)在網(wǎng)站上說明,它頒發(fā)的證書適合xxxx年后的OS。

             
          3、CA:證書認(rèn)證中心,Certificate Authority。我一直把其理解成一個(gè)證書發(fā)布機(jī)構(gòu)。
           
           
           

           


          評論

          # re: 用代理實(shí)現(xiàn)AJAX跨域訪問時(shí)遇到HTTPS  回復(fù)  更多評論   

          2007-04-27 16:36 by 交口稱贊
          友情支持,圖片掛了

          # re: 用代理實(shí)現(xiàn)AJAX跨域訪問時(shí)遇到HTTPS  回復(fù)  更多評論   

          2007-04-28 09:12 by 王凌華
          既然碰到我們公司的同事了。:) 你好你好.

          # re: 用代理實(shí)現(xiàn)AJAX跨域訪問時(shí)遇到HTTPS  回復(fù)  更多評論   

          2007-04-28 12:16 by itspy
          @王凌華

          呵呵,人生何處不相逢,相逢一笑.........


          你是哪部分的?我是合肥的。

          # re: 用代理實(shí)現(xiàn)AJAX跨域訪問時(shí)遇到HTTPS  回復(fù)  更多評論   

          2007-04-30 14:31 by 自己的小屋
          Me in HF too. What is your English name?
          主站蜘蛛池模板: 油尖旺区| 永丰县| 老河口市| 周口市| 广昌县| 东方市| 隆尧县| 山阴县| 枞阳县| 安福县| 政和县| 定边县| 汶上县| 漾濞| 陕西省| 苏尼特右旗| 江都市| 鲁甸县| 铁力市| 咸阳市| 府谷县| 遵化市| 濉溪县| 长寿区| 阿瓦提县| 清流县| 浠水县| 茂名市| 固始县| 尼勒克县| 花莲市| 高陵县| 泸水县| 常德市| 宜丰县| 阜新| 镇原县| 保山市| 大余县| 泽库县| 崇阳县|