nginx 配置支持多域名跨域

背景

前端跨域一般使用JSONP(GET请求小数据量)、CORS(跨域资源共享,Cross-Origin Resource Sharing,用来传递大数据量)
现在的场景是需要nginx配置支持多域名跨域,跨域一般需要设置Access-Control-Allow-Origin。

问题描述

配置nginx,如果简单设置add_header Access-Control-Allow-Origin *之类的统配是可以实现,但是太暴力了,而且不安全。这两种配置又会报错:

add_header Access-Control-Allow-Origin "https://gameplus.qq.com, https://pre-gameplus.qq.com";


或者:

add_header Access-Control-Allow-Origin "https://gameplus.qq.com";
add_header Access-Control-Allow-Origin "https://pre_gameplus.qq.com";


报错信息:

nginx 配置支持多域名跨域_第1张图片

解决方法

1 暴力统配解决

add_header Access-Control-Allow-Origin *;

如果简单设置add_header Access-Control-Allow-Origin *之类的统配是可以实现,但是太暴力了,而且不安全。

2 条件过滤(推荐)

set $cors_origin "";
if ($http_origin ~* "^https://gameplus.qq.com$") {
    set $cors_origin $http_origin;
}
if ($http_origin ~* "^https://pre-gameplus.qq.com$") {
    set $cors_origin $http_origin;
}
add_header Access-Control-Allow-Origin $cors_origin;

比较优雅,按需增加跨域配置。

你可能感兴趣的:(nginx那些事)