跨域请求

同源策略:请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.

跨域的安全限制是对浏览器端来说的

cs2.cn 去访问 cs.cn,就会出现跨域问题,跨域请求的报错如下图

1.JQ 的jsonp 方式

$.ajax({
      //只能是get 方式
      type:"get",
      //请求的地址
      url:"http://cs.cn/index/api/index",
      //必须 jsonp 方式
      dataType:"jsonp",
      //默认为:callback,对应处理页面接收的名字                 
      jsonp:"callback",
      //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 ,选填,优先执行此方法,处理自己的业务
      jsonpCallback:"xiaozhu",                       
      success : function(data){
            //请求返回的结果
            console.log('data');                    
       },
       error:function(){
             alert('fail'); 
       }
 });

//回调的函数,优先执行此方法
function xiaozhu() {
console.log(88)
//业务处理
}

php 处理
$callback=$_GET['callback'];
$list=db('data')
->limit(5)
->select();

return $callback.'('.json_encode($list).')';

2.$_SERVER['HTTP_ORIGIN']

$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
    'http://localhost:8080',
    'http://test.com:8080',
    'http://test1.cn:8080'
);
 
if(in_array($origin, $allow_origin)){
    header('Access-Control-Allow-Credentials: true');
    header("Access-Control-Allow-Headers: *");
    header('Access-Control-Allow-Origin:'.$origin);
    header('Access-Control-Max-Age:3600');
}

 

  

原文地址:https://www.cnblogs.com/songxuan/p/10298416.html