新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 讨论HTML、XHTML、Web2.0、Ajax、XUL, ExtJS, jQuery, JSON、Social Networking System(SNS)、Rich Internet Applications (RIA)、Tagging System、Taxonomy(tagsonomy,folkonomy)、XForms、XFrames、XInclude, XBL (XML Binding Language)等话题
    [返回] 计算机科学论坛XML.ORG.CN讨论区 - XML技术『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』 → 用代理实现AJAX跨域访问时遇到HTTPS 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4678 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用代理实现AJAX跨域访问时遇到HTTPS 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客楼主
    发贴心情 用代理实现AJAX跨域访问时遇到HTTPS


    解决AJAX跨域访问一般都是通过代理服务器来解决,但是我使用coldFusion实现这个问题时却遇到这样一个错误,在cfhttp标签使用https访问网站时,出现如下错误提示:
    Connection Failure: Status code unavailable

    找了好久也没找到原因,最后还是在别的帮助下发现这个问题。由于个问题是语言无关的,所以不敢独享,特拿来和大家分享。

    为了方便说明,先做出一些定义。
    代理服务器:在AJAX可以访问的域中,并且代理AJAX来访问其它网站的服务器,
    目标服务器:AJAX真实想想访问的网址所在的服务器。

    我遇到的问题就是:代理服务器通过HTTPS访问目标服务器,但是目标服务器的证书出于一些原因并不被信任。

    如何让代理服务器相信目标服务器的证书呢:有两种方法
    1):一般代理服务器都持有一些可信的顶CA的证书,如果站点的证书被其中之一的证书签名过了,那么代理服务器就会相信这个证书。不过被这些顶给证书签名是要收费的。(如何查看证书被哪些CA给签名了,可以参考备注)
    2):你个人确定这个网站是没有问题的(比如我们访问公司自己的网站时),然后手工的告诉代理服务器,这个证书是可信的,那么以后被这个证书签名过的证书对这个代理服务器也是可信的了。
    http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&file=00000272.htm
        有一点要说明的,操作系统在安装的时候,已经安装了一些可信的证书(如何查看OS已经安装了哪些证书,可以参考备注),所以在通过浏览器访问网站的时候,如果网站的证书已经被这些证书其中之一签名过了,浏览器也会相信这个网站的证书。否则浏览器会询问你,这个证书有问题,你是否相信这个证书。

        按照上面的URL我给服务器添加证书后,发现还是不行。最后证书确实是被验证通过了,但是证书是给指定的域名使用的,但是我在访问这个网站时,使用的IP地址,不是域名,所以服务器还是不相信这个网站。就好比:你有一张身份证,身份证确实是真的,但是你拿到的是别人的身份证。
        通过查看证书,发现证书被颁发给如下域*.qa.webex.com(如何查看证书被颁发给哪些域名可以参考备注)。但之前我在code时,AJAX是直接使用的目标服务器的IP地址,不是域名。所以最后目标服务器无法被信任。这就好比,你明明拿着身份证去登机,虽然身份证是真的,但你同时要表明你就是身份证上的那人,你要是整容整的太大了,人家肯定不认你。
        最后解决这个问题的办法:在代理服务器上的HOST文件里面添加一行记录,把felix.qa.webex.com域名与目标服务器的IP关连起来。

        总结:要用代理实现AJAX跨域访问遇到HTTPS协议时,首先要目标站点的证书被代理服务器信任,其次就是访问的URL处于,证书颁发对象下面,不要使用IP地址这样的方法来访问。



    本文章首发于 http://blog.OpenJ.cn

    备注:
    1、如何查看证书被哪些CA,或者是其它证书签名?
    通过浏览器(IE)打开对应的HTTPS网站。
    双击锁形图标(如果是IE6,这个图标应该在右下角的状态栏)
    点击证书路径,就可以看到这个证书的上级,以及上级的上级。

    2、证书可以给哪些网站使用?
    备注1已经说明了如何查看证书,打开证书,点击常规:
    证书颁发给:*.qa.webex.com


    3、如何查看OS已经安装了哪些证书?
    IE->工具->Internet选项->内容->证书
    这时你会看到很多Tab,不同的Tab对应不同的证书类型,我大概的看了一下,没有100个,也有几十个。在Windows下,Firefox好像并不使用OS的证书,而是使用自己安装时带的证书,以前好像看过,但写此文章时没有找到,一直也没想到测试办法。

    正是因为证书一般是OS安装的,所以可以看到有的商业CA会在网站上说明,它颁发的证书适合xxxx年后的OS。

        
    3、CA:证书认证中心,Certificate Authority。我一直把其理解成一个证书发布机构。

    由于论坛贴图不太方便,如果想仔细的看备注中说明,可以访问:

    http://www.blogjava.net/itspy/archive/2007/04/27/114125.html


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    存在即是被搜索!

    BLOG =>  http://www.OpenJ.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 16:29:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/6/22 23:11:48

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms