服务端实现多域名跨域

在做WEB的时候,我们很多时候需要将静态资源如CSS/JS放CDN或者其他域,如此一起,前端发起的异步请求,就会出现跨域错误信息。这时候后端就需要做对应的数据处理,以PHP为例:

我们可以用一条很基本的语句解决掉:

header(‘Access-Control-Allow-Origin:*’);

不过最近在和前端做开发的时候,由于前端使用的VUE框架,也不知道是什么原因,导致通配符*的跨域失效,而后端又需要接收多个前端测试地址的API请求,这时候就无法实现单行记录

道理很简单,能动态化解决的,交给代码,别想着人为,人力有限!

$url = $_SERVER[“HTTP_REFERER”]; //获取完整的来路URL
$http = ‘http://’;$str=”;
if (strstr($url, $http)){
$str = str_replace(“http://”,””,$url); //去掉http://
} else {
$str = str_replace(“https://”,””,$url); //去掉https://
$http = ‘https://’;
}
$strdomain = explode(“/”,$str); // 以“/”分开成数组
$domain = $strdomain[0]; //取第一个“/”以前的字符
header(‘Access-Control-Allow-Origin:’.$http.$domain);
header(‘Access-Control-Allow-Credentials:true’);
header(‘Access-Control-Allow-Methods:GET,POST,OPTIONS’);
header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

发表评论

电子邮件地址不会被公开。 必填项已用*标注