请关闭广告过滤器!
我们检测到你可能使用了 AdBlock 或 Adblock Plus,素材鸟网站没有弹窗广告,请支持我们更好的发展下去。
你可以设定特殊规则或将素材鸟加入白名单,以便我们更好地为大家提供免费素材。
关闭
首页 博客 解决多个域名跨域的问题
解决多个域名跨域的问题

解决多个域名跨域的问题

在开发接口过程中遇到多个请求域名就会有多个域名跨域的问题,通过修改Nginx的配置可以解决多个域名跨域的问题
浏览次数:1273  次     下载次数:0  次     下载积分:1  积分
评分:

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有加载这个模块。

默认值: -

配置段: http

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

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

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

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

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


原文链接:https://zhuanlan.zhihu.com/p/397562478


方法三:

location ~ \.php$ {

      #允许跨域访问

      #add_header 'Access-Control-Allow-Origin' '*'; #不限域名

      add_header 'Access-Control-Allow-Origin' 'http://dev.gongfuxiang.com'; #限制域名的方式

      add_header 'Access-Control-Allow-Credentials' 'true';

      add_header 'Access-Control-Allow-Methods' 'OPTION, POST, GET';

      add_header 'Access-Control-Allow-Headers' 'X-Requested-With, Content-Type';


      #PHP配置

      fastcgi_pass   127.0.0.1:9000;

      fastcgi_index  index.php;

      fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

      include        fastcgi_params;

}


0人收藏
0人点赞
本站素材来自用户分享,仅限学习交流请勿用于商业用途。如损害你的权益请联系客服QQ:201240120 给予处理。

热卖云服务器低至61元/年

2核2G 3M带宽 流量放心用

立即查看
相关素材
上传资源赚积分
推荐素材
共0条评论
最新评论
还没有评论哦!