允许所有跨域请求

在 PHP 跨域设置中,我们会使用 header("Access-Control-Allow-Origin:*") 放行所有域名的跨域请求。

允许单一域名跨域

允许所有域名的跨域请求往往是不安全的,我们有时需要仅允许某个域名的跨域请求。单一域名可以这样设置:

1
header("Access-Control-Allow-Origin:http://127.0.0.1");

允许多个指定域名跨域

那么设置多个指定的 Access-Control-Allow-Origin 该如何 Code 呢?

1
2
3
4
5
6
7
8
9
10
11
12
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
$allowOrigin = array(
'http://xxx.xxx1.com',
'http://xxx.xxx2.com',
'http://xxx.xxx3.com',
'http://xxx.xxx4.com'
);
if (in_array($origin, $allowOrigin)) {
header("Access-Control-Allow-Origin:".$origin);
}

我们先通过 $_SERVER['HTTP_ORIGIN'] 获取请求的 Origin 信息,然后判断该请求来源域名是否在我们允许跨域的域名列表中,若该域名存在列表中,则设置:

1
header("Access-Control-Allow-Origin:".$origin);