nginx配置允許指定域名下所有二級域名跨域請求


核心原理是根據請求域名匹配是否是某域名的二級域名判斷是否添加允許跨越頭。

 

#暢游www
    server {
        listen 8015;
        server_name test-tl.changyou.com;
        root E:/work/site/www ;
        location ~* \.(eot|ttf|woff|svg|otf)$ {
            set $flag '0';
            if ( $http_origin ~* ^(http?:\/\/.*\.changyou\.com:8014$) ){
                 set $flag '1';
            }
            if ( $http_origin ~* ^(http?:\/\/.*\.cy\.com:8014$) ){
                 set $flag '1';
            }
            if ($flag = '1') {
                 add_header 'Access-Control-Allow-Origin' $http_origin;
                 add_header 'Access-Control-Allow-Credentials' 'true';
                 add_header 'Access-Control-Allow-Methods' 'GET,POST';
                 
            }
        }
    } 

 

匹配文件類型: eot|ttf|woff|svg|otf 

為這幾種文件類型設置跨域訪問

$http_origin 為nginx全局變量,即域名
$http_origin ~* ^(http?:\/\/.*\.changyou\.com:8014$)

匹配所有changyou.com:8014端口下面的二級域名

由於nginx無法使用or語法,所以判斷 匹配所有cy.com:8014端口下面的二級域名

用變量賦值的方法實現了

set $flag '0';
            if ( $http_origin ~* ^(http?:\/\/.*\.changyou\.com:8014$) ){
                 set $flag '1';
            }
            if ( $http_origin ~* ^(http?:\/\/.*\.cy\.com:8014$) ){
                 set $flag '1';
            }

如果默認是80端口,就把:8014去掉就行。

其實核心代碼就是:

                add_header 'Access-Control-Allow-Origin' $http_origin;
                 add_header 'Access-Control-Allow-Methods' 'GET,POST';            

 

(1)Access-Control-Allow-Origin

該字段是必須的。它的值要么是請求時Origin字段的值,要么是一個*,表示接受任意域名的請求。

(2)Access-Control-Request-Method

該字段是必須的,用來列出瀏覽器的CORS請求會用到哪些HTTP方法

(3)Access-Control-Allow-Credentials

該字段可選。它的值是一個布爾值,表示是否允許發送Cookie。默認情況下,Cookie不包括在CORS請求之中。設為true,即表示服務器明確許可,Cookie可以包含在請求中,一起發給服務器。這個值也只能設為true,如果服務器不要瀏覽器發送Cookie,刪除該字段即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM