HttpClient与JsonP针对跨域的问题

来源:互联网 发布:如何联系淘宝卖家 编辑:程序博客网 时间:2024/06/01 19:52

近期开发过程中遇到了跨域的问题,趁着空暇时间,做一下消化整理,希望能够掌握这方面的知识,也希望能得到大众的指点。

        在理解跨域之前,要弄懂一点,究竟什么会导致跨域,以前认为,在一个域名的系统中去访问另一个域名的系统就是跨域,这是错误的,跨域不仅仅是打开另一个域名的网站而已,而是去操作,去操作另一个域名系统的内容,才会导致跨域,比如在本系统中,去增加另一个域名下系统的一条数据,或者取出一条记录,这才是跨域,单纯的一个链接,上面写着另一个域名的地址,那不叫跨域,而是打开。

        跨域分为一级跨域和二级跨域,如果是例如aaa.xxx.com与bbb.xxx.com就是二级跨域,xxx.aaa.com与xxx.bbb.com就是一级跨域;

        HttpClient与JsonP能够轻易的解决跨域问题,从而得到自己想要的数据,唯一的不同点是,HttpClient是在Java代码中进行跨域访问,而JsonP是在js中进行跨域访问,在此,我们团队对HttpClient进行了再一次的封装,从而进行方便的使用,可以通过org.apache.commons.httpclient源码包进行分析学习。

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public static Document mycoll(String page,String rows,String userEname,  
  2.             String title,String sysname,String objtype,String objid)  
  3.       {  
  4.         String url = PropertyUtil.getValueByProperty("webservice_chat_url");  
  5.         String sysid = PropertyUtil.getValueByProperty("sysid");  
  6.         String split = getSplit(url);  
  7.         String serverName = url + split + "web/mycoll";  
  8.   
  9.         NameValuePair[] paras = new NameValuePair[8];  
  10.         paras[0] = new NameValuePair("page", StrUtil.doNull(page, ""));  
  11.         paras[1] = new NameValuePair("rows", StrUtil.doNull(rows, ""));  
  12.         paras[2] = new NameValuePair("userEname", StrUtil.doNull(userEname, ""));  
  13.         paras[3] = new NameValuePair("title", StrUtil.doNull(title, ""));  
  14.         paras[4] = new NameValuePair("sysname", StrUtil.doNull(sysname, ""));  
  15.         paras[5] = new NameValuePair("objtype", StrUtil.doNull(objtype, ""));  
  16.         paras[6] = new NameValuePair("objid", StrUtil.doNull(objid, ""));  
  17.         paras[7] = new NameValuePair("sysid", StrUtil.doNull(sysid, ""));  
  18.           
  19.         Document doc = PostHttp.postHttpDocument(serverName, paras);  
  20.           
  21.         return doc;  
  22.       }  

后台返回XML数据。

  1. <script type="text/javascript" src="jquery.js"></script>  
  2. <script type="text/javascript">  
  3.     $.ajax({  
  4.         url:"http://crossdomain.com/services.php",  
  5.         dataType:'jsonp',  
  6.         data:'',  
  7.         jsonp:'callback',  
  8.         success:function(result) {  
  9.             for(var i in result) {  
  10.                 alert(i+":"+result[i]);//循环输出a:1,b:2,etc.  
  11.             }  
  12.         },  
  13.         timeout:3000  
  14.     });  
  15. </script> 
0 0
原创粉丝点击