跨域请求
同源策略:请求的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'); }