因为需要可能会允许服务器跨域交互数据,所以要设置允许多域名跨域。

#通用方法

打开 nginx.conf,在 http 里加入如下语句:

1
2
3
4
5
6
7
http {
...
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
...
}

即可。只是这样的方式安全性很差,但像下面的设置方式不被浏览器允许:

1
2
3
4
5
6
7
8
http {
...
add_header Access-Control-Allow-Origin domain1;
add_header Access-Control-Allow-Origin domain2;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
...
}

浏览器只允许一个 Access-Control-Allow-Origin 字段。

#解决方法

add_header Access-Control-Allow-Origin 语句放置在如下位置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
http {
...
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
...
server {
...
location ~ \.php($|/) {
...
if ($http_origin ~* "^domain1$" ) {
add_header Access-Control-Allow-Origin $http_origin;
}
if ($http_origin ~* "^domain2$" ) {
add_header Access-Control-Allow-Origin $http_origin;
}
...
}
...
}
}

完。

#参考文档