0x80070005,跨域访问

最近在弄一个sip网页集成版软电话,为了功能的完善,呼叫中心的工作人员为我们提供了一个http接口,我先在网页中直接打开分析了一下他的返回值,然后又放到js中去访问,结果一放到js中一访问就发现浏览器会提示:

允许跨域 spring boot 允许跨域 https如何调用http接口_System

刚开始我百思不得其解,查询过表头中未找到源http://localhost:8080,原本我还以为是在发送的时候我的表头有问题,但是用html5设置表头尝试了几次,发现还是提示一样的问题,于是我又在网上查询了一下0x80070005这个错误代码,网上提示说是属于跨域了,于是我又跟着网上的方法试了一下:

方法一:get方式获取

$.ajax({ dataType:'jsonp',
         url:"http://10.0.0.230/asterccinterfaces?EVENT=GetCdr&orgidentity=dc&user=7501&password=7501&pwdtype=plaintext",  
    date:'get'  
             success: function(data){         alert(data)                  }  ,
  });

对于跨域的访问,只能使用get,并且要设置dataType,有的朋友这个样设置之后就可以成功运行了,但是很可惜也不知道是电脑的设置问题还是什么,反正这个方法在我这里无效,于是我又继续尝试,突然就想到了浏览器的安全权限设置,于是有了方法二

方法二:浏览器安全站点设置

1.将访问地址加入受信任站点:http://10.0.0.230

允许跨域 spring boot 允许跨域 https如何调用http接口_System_02

2.点击自定义,将通过域访问数据源设置为启用

允许跨域 spring boot 允许跨域 https如何调用http接口_跨域_03

这种方法如果是固定电脑使用的话,那还是蛮方便的,但是如果大面积的客户端访问服务器那就不行了,毕竟我们不可能让每一个客户都修改自己的浏览器吧,更何况有的人还不会,特别是一些商业网,这是更不允许的。因此这个方法建议大家视情况而用。

方法三:后台发送请求接收返回数据:参照

publicclass HttpInvoker 
{

     publicstaticfinal="http://10.0.0.230/asterccinterfaces";

     publicstaticfinal="http://10.0.0.230/asterccinterfaces";

     publicstaticvoidthrows IOException 
{
         //
=+"??EVENT=GetCdr&orgidentity=dc&user=7501&password=7501&pwdtype=plaintext&username="+"fat man", "utf-8");
         URL getUrl =new URL(getURL);
         // 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
        //
= (HttpURLConnection) getUrl.openConnection();
         // 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到
        //
        connection.connect();
         //
=newnew InputStreamReader(
                 connection.getInputStream()));
         System.out.println("=============================");
         System.out.println("Contents of get request");
         System.out.println("=============================");
         String lines;
         while=!=null) 
{
             System.out.println(lines);
         }
         reader.close();
         //
        connection.disconnect();
         System.out.println("=============================");
         System.out.println("Contents of get request ends");
         System.out.println("=============================");
     }

     publicstaticvoidthrows IOException 
{
         //
=new URL(POST_URL);
         //
= (HttpURLConnection) postUrl.openConnection();
         // Output to the connection. Default is
         // false, set to true because post
         // method must write something to the
         // connection
         // 设置是否向connection输出,因为这个是post请求,参数要放在
        //
true);
         //
true);
         //
"POST");
         // Post cannot use caches
         //
false);
         // This method takes effects to
         // every instances of this class.
         // URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。
        // connection.setFollowRedirects(true);

         // This methods only
         // takes effacts to this
         // instance.
         //
true);
         // Set the content type to urlencoded,
         // because we will write
         // some URL-encoded content to the
         // connection. Settings above must be set before connect!
         // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
        // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
         //
"Content-Type", "application/x-www-form-urlencoded");
         // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
        //
        connection.connect();
         DataOutputStream out =new DataOutputStream(connection
                 .getOutputStream());
         // The URL-encoded contend
         //
="