18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > Nginx指定多个域名跨域配置

Nginx指定多个域名跨域配置

时间:2023-02-07 16:48:01 | 来源:建站知识

时间:2023-02-07 16:48:01 来源:建站知识

location /live{ ... add_header 'Access-Control-Allow-Origin' 'http://domain:port' always; add_header 'Access-Control-Allow-Credentials' 'true'; # 为预检请求加的header add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE'; #为预检请求加的header add_header 'Access-Control-Allow-Headers' '*';}第一个响应头是允许跨域的域

$http_origin

当请求成功时,HTTP CODE 为200。而请求失败时HTTP CODE 为400, 此时add_header ‘Access-Control-Allow-Origin’ ‘*’ 配置无效!设置无论HTTP CODE 为何值时都生效需要加 always 。nginx版本>1.7.5时候无须加always。

第二个响应头,是否要认证

第三个响应头是允许跨域的请求方法

第四个响应头是请求头里面允许跨域使用的请求头,如果有自定义的请求头,也要加进去




2.Nginx配置域名跨域多个域名

方法一:

server { set $cors ''; if ($http_origin ~* "^http://deomain01:port$") { set $cors $http_origin; } if ($http_origin ~* "^http://deomain02:port$") { set $cors $http_origin; } if ($http_origin ~* "^http://deomain002:port$") { set $cors $http_origin; } location /live{ ... add_header 'Access-Control-Allow-Origin' '$cors'; add_header 'Access-Control-Allow-Credentials' 'true'; # 为预检请求加的header add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE'; #为预检请求加的header add_header 'Access-Control-Allow-Headers' '*'; }$http_origin这个格式是nginx取请求中header的XXX的值的。

这里取的是origin,而一般跨域请求都会将请求的来源放在origin中(浏览器会往跨域请求的header上面加origin这个header)

$ cors 变量获取想要的跨域域名并赋值到 “add_header ‘Access-Control-Allow-Origin’ ‘$cors’”中。




方法二

map $http_origin $cors_list{ default http://aaa.cn; "~ http://bbb.cn" http://bbb.cn; } server { listen 8089; server_name localhost; location /live{ ... add_header 'Access-Control-Allow-Origin' '$cors_list'; add_header 'Access-Control-Allow-Credentials' 'true'; # 为预检请求加的header add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE'; #为预检请求加的header add_header 'Access-Control-Allow-Headers' '*'; }map指令是ngx_http_map_module模块提供的,默认情况下nginx有加载这个模块。




语法: map $var1 $var2 {…}

默认值: -

配置段: http

map为一个变量设置的映射表。映射表由两列组成,匹配模式和对应的值。

在map块里的参数指定了源变量值和结果值的对应关系。

default: 没有匹配结果将使用的默认值。如果没有设置default,将会用一个空的字符串作为默认的结果。

匹配模式可以是一个简单的字符串或者正则表达式,使用正则表达式要用(‘~’)。

注意:在nginx.conf配置文件配置跨域时,记得清除客户端如浏览器缓存,否则会出现配置没生效的情况。



关键词:配置,指定

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭