nginx Access-Control-Allow-Origin 多域名跨域设置

2019-1-16 12:24:15 星期三

网站的静态文件(js, css, 图片, 字体等)是在一个单独的域名下的, 为了防止非法访问, 给nginx添加了跨域的控制, 也可以在PHP代码中添加

nginx指令: add header

1. 在location块中, 判断当前来源的域名($http_origin)是不是符合条件,

2. 符合条件的话就用add_header指令设置 Access-Control-Allow-Origin

 

    location ~ \.ico|jpg|gif|png|js|css|woff2|ttf$ {
        if ($http_origin ~ [a-z]+\.hearu\.top$){ # xxx.hearu.top域名才可以访问
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Request-Method GET;
        }
        root /usr/local/...../ui; #存放静态文件的路径
        #expires 1h;
    }

 

 

nginx if 指令参考: 连接

1、正则表达式匹配:

==:等值比较;

~:与指定正则表达式模式匹配时返回“真”,区分字符大小写;

~*:与指定正则表达式模式匹配时返回“真”,不区分字符大小写;

!~:与指定正则表达式模式不匹配时返回“真”,区分字符大小写;

!~*:与指定正则表达式模式不匹配时返回“真”,不区分字符大小写;

 

2、文件及目录匹配判断:

-f, !-f:判断指定的路径是否为存在且为文件;

-d, !-d:判断指定的路径是否为存在且为目录;

-e, !-e:判断指定的路径是否存在,文件或目录均可;

-x, !-x:判断指定路径的文件是否存在且可执行;

 

PHP 设置

1 header('Access-Control-Allow-Origin: '.BASEURL); //该字段是必须, 它的值要么是一个域名值(要带上http或https),要么是一个*,表示接受任意域名的请求
2 header('Access-Control-Allow-Credentials: true'); //该字段可选, 它的值要么是true, 要么没有这条语句; 表示是否允许发送Cookie, true: 请求时带上cookie, 设置为true时, Access-Control-Allow-Origin的值不能为*
3 header('Access-Control-Request-Method: GET,POST'); //该字段是必须的

 

硬广: 模块化, 轻量级PHP框架

posted @ 2019-01-16 12:29  myD  阅读(11342)  评论(0编辑  收藏  举报