跨域

什么是跨域

域名的组成

http:// www . test.com 80 / index.html
协议 子域名   主域名   端口号   请求资源地址

说明:当协议、子域名、主域名、和端口号有任意一个不同时,就算是不同域

跨域:不同域之间相互请求资源,就是跨域

跨域的解决方案

Jsonp :需要目标服务器配合一个callback函数

      JSONP只支持GET请求

CORS解决跨域 :跨域访问的请求头中存在Origin的字段,用来记录当前的访问域名,我们可以再服务端增加一个响应头Access-Control-Allow-Origin来告诉浏览器我们支持它获取就可以了

//一个域名跨域访问
<?php header('Access-Control-Allow-Origin:http://127.0.0.1'); $arr = ['code' => 200, 'name' => 'cui']; echo $data = json_encode($arr); ?>

//多个域名跨域访问

<?php
$requestHeader = getallheaders();
$origin = isset($requestHeader['Origin'])?$requestHeader['Origin']:'';
switch ($origin) {
case 'http://127.0.0.1':
header('Access-Control-Allow-Origin:http://127.0.0.1');
break;
case 'http://localhost':
header('Access-Control-Allow-Origin:http://localhost');
break;
default:
break;
}
$arr = ['code' => 200, 'name' => 'cui'];
echo $data = json_encode($arr);
//注意,不支持下面这种写法
//header('Access-Control-Allow-Origin:http://localhost,http://127.0.0.1');
?>

//不推荐这样写,不安全

<?php
header('Access-Control-Allow-Origin:*');
$arr = ['code' => 200, 'name' => 'cui'];
echo $data = json_encode($arr);

?>

 

posted @ 2020-05-07 09:45  初雨诗清风  阅读(130)  评论(0编辑  收藏  举报