跨站资源共享 CORS 跨域配置
欢迎访问新站点: https://www.yidiankuaile.com/post/cors-settings
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器,让运行在一个 origin (domain) 上的 Web 应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。具体参考 MDN 文档
下面记录一下如何配置 CORS
Nginx
可以在 http
或 server
或 location
中添加 add_header
允许单个域名跨域访问
1
2add_header "Access-Control-Allow-Origin" "http://example.com";
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS";允许多个域名跨域访问
1
2
3
4if ($http_origin ~ "^https?://(a.example.com|b.example.com)") {
add_header "Access-Control-Allow-Origin" $http_origin;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS";
}允许所有域名跨域访问
1
2add_header "Access-Control-Allow-Origin" "*";
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS";
PHP
在 server.php
文件头部添加如下代码:
允许单个域名跨域访问
1
header('Access-Control-Allow-Origin:http://example.com');
允许多个域名跨域访问
1
2
3
4
5
6
7
8
9
10
11
12$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
'http://a.example.com',
'https://a.example.com',
'http://b.example.com',
'https://b.example.com'
);
if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin:'.$origin);
}允许所有域名访问
1
header('Access-Control-Allow-Origin:*');
更新记录
- 2019/4/20 17:28:43 首次发布