Ajax跨域请求 Access-Control-Allow-Origin 大多是使用*通配符放行

正则方式

php

1
2
3
4
$http_origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if (preg_match('/domain1.com|domain2.com$/i', $http_origin)) {
header('Access-Control-Allow-Origin: ' . $http_origin);
}

Nginx

1
2
3
4
location / {
if ($http_origin ~ 'domain1.com|domain2.com$') {
add_header Access-Control-Allow-Origin $http_origin;
}}

上面的例子中,只要匹配到以 domain1.comdomain2.com 结尾的域名,就返回 Access-Control-Allow-Origin 头信息,表示通过。

普通方式

放行单个域名

php

1
header('Access-Control-Allow-Origin: http://domain1.com');

Nginx

1
add_header Access-Control-Allow-Origin http://domain1.com;

放行所有域名

php

1
header('Access-Control-Allow-Origin: *');

Nginx

1
add_header Access-Control-Allow-Origin *;

跨域学习文章

跨域资源共享 CORS 详解 http://www.ruanyifeng.com/blog/2016/04/cors.html

HTTP 访问控制(CORS) https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS