跨域请求 Access-Control-Allow-Origin
Ajax 跨域 指定的域名很简单
有二个域名 domain1.com 和 domain2.com
PHP 和 Nginx 二种方法
PHP方法
$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方法
location / {
if ($http_origin ~ 'domain1.com|domain2.com$') {
add_header Access-Control-Allow-Origin $http_origin;
}
}
只要匹配到以 domain1.com 或 domain2.com 结尾的域名
就返回 Access-Control-Allow-Origin 头信息,表示通过
其他模式:
放行所有域名
PHP方法
header('Access-Control-Allow-Origin: *');
Nginx方法
add_header Access-Control-Allow-Origin *;
放行单个域名
PHP方法
header('Access-Control-Allow-Origin: http://domain1.com');
Nginx方法
add_header Access-Control-Allow-Origin http://domain1.com;
使用正则匹配的好处是可以不用区分 http 和 https。上面的例子中,均使用 http://,如果放行 https:// 就要多加上一行代码了。为了代码简洁,使用正则吧。
阮一峰大神的文章 跨域资源共享 CORS 详解
//www.ruanyifeng.com/blog/2016/04/cors.html
什么是 HTTP访问控制(CORS)
//developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题