~~鱼跃~~

I Want to fly!

导航

ajax --- 跨域访问解决方案

Posted on 2007-01-29 23:07  flyfish  阅读(2783)  评论(2编辑  收藏  举报

ajax --- 跨域访问解决方案

所谓跨域就是不同域名之间交换数据:如a.com要获取b.com中的数据,在ajax的客户端如果要实现跨域访问时,IE为弹出一个警告框.
上网找了好多AJAX跨域方面的解决方案..可找来找去基本上都是ASP和JSP的内容..就是没有.NET方面的.气sa偶了...
问QQ群内的群友.也无人答.好不容易有人回答了.却让我想了半天.想不出所以然来,引用他的话就是:用代理服务器访问非本域的内容
主要是这个代理服务器让我想了半天.还以为是在IE工具菜单栏中设立代理.总之一句话.没搞定.
呵呵..还是按自己的方法来理解吧..嗯..所谓:用代理服务器访问非本域的内容,我的理解就是本域中的ASPX页面.或是把它称为代理页面也可以..
原理就是客户端访问本地的ASPX页面.由它来到得远程服务器上的数据,再返回给客户端.
解决方案一:当然是用webServices了..不过这个要知道对方的接口.及一些密钥.所以这个方案偶就没法试了.
方案二:此方案感觉不是很好.不过这是我在网上找不到解决方案时写出来的.呵呵..实在是被逼无奈..
         代码如下:
        WebRequest ObjWebrt = WebRequest.Create(url);  // url 为远端另一个域名的地址
        WebResponse ObjWebre = ObjWebrt.GetResponse();
        Stream ObjStream = ObjWebre.GetResponseStream();
        StringBuilder sb = new StringBuilder();
        StreamReader r = new StreamReader(ObjStream, System.Text.Encoding.GetEncoding("utf-8"), false, 1000);
        string line;
        while ((line = r.ReadLine()) != null)
        {
            sb.Append(line);
        }
        Response.Write(sb.ToString());
方案三:呵呵..本人认为是最好的.不过这个也是偶历尽千辛万苦还没找到.却是我同事找到的.呵呵..真是惭愧,方法如下
         主要还是利用XMLHTTP来实现..这个当初偶在看ASP跨域中就已经看到了..只是一直没办法应用到.NET当中.呵呵..闲话少说.先看代码:
        MSXML2.XMLHTTP xmlhttp = new MSXML2.XMLHTTP();
        xmlhttp.open("GET", url, false, null, null);
        xmlhttp.send(null);
        string strSource = xmlhttp.responseText;
        Response.Write(strSource);        
        怎么样..是够简单吧..这个很像客户端的XMLHttpRequest,不过在服务器端要用到时.必须先引用.
        在电脑中搜索:MSXML2.dll 文件.然后引用到项目中.在开始编码时再来一句:using MSXML2; 呵呵.一却搞定.



解决xmlhttp的跨域访问权限
http://hi.baidu.com/clazy/blog/item/32330c9528199e087bf480fc.html