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框架