多种方式跨域

版权声明:本文为博主原创文章,未经博主允许不得转载。一旦发现,后果自负. https://blog.csdn.net/qq_40884473/article/details/79816584
接口网址:http://www.k780.com
浏览器同源策略阻止跨域:
                                    ①同域名
                                    ②同端口
                                    ③同协议
能跨域的标签:
                img
                link
                script 的src
             
最简单跨域:
         script的scr为数据的url,加个get参数为函数名,输出页面 echo $_GET['参数']()。
         js页面定义:函数名(msg){alert(msg);}
 
JQ形式跨域①:
         url为接口网址;方式一定是get;dataType:jsonp;jsonpCallback:回调函数名,跟接口网址的函数名一样;
         在success中操作数据

 

JQ形式跨域②:
         $.ajax({
               type:"GET",
               url:"网址",
               data:"正常传递参数",
               dataType:'jsonp',                       //声明 jsonp形式
               jsonp:'cbk',                               //php端 echo $_GET['cbk'].'('.数据.')';会把successs当作回调函数。
              success:function(msg){
                   alert(msg);
             }
         });
         php端:echo $_GET['cbk']()            ///实现回调。
注:jsonp:??时是告诉服务器端success是回调函数,因为它属于匿名函数。
 
JQ的get形式jsonp:
          var url="url?callback=?";
          $.get(url,function(msg){alert(msg)},'jsonp');
          //参数③是声明为jsonp;callback是回调函数,?是因为是匿名函数,php页面 $_GET['callback'](数据)实现回调。
 
JS形式接口:
          php页面:echo"var data{json_encode($data)}";
          html页面:$.getScript(网址,success(msg){操作data});           //不需要回调
          ////getScript() 1.2版本后可以跨域请求 js 形式数据,函数操作数据。
 
普通ajax形式解决同源:
         在php页面加个header头,无需回调函数,正常输出数据。*为所有域名都可访问。
         header('Access-Control-Allow-Origin:*');

猜你喜欢

转载自blog.csdn.net/qq_40884473/article/details/79816584