nginx配置容許指定域名下全部二級域名跨域請求

核心原理是根據請求域名匹配是不是某域名的二級域名判斷是否添加容許跨越頭。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端口下面的二級域名svg

用變量賦值的方法實現了spa

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去掉就行。code

其實核心代碼就是:server

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

 

(1)Access-Control-Allow-Originblog

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

(2)Access-Control-Request-Method

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

(3)Access-Control-Allow-Credentials

該字段可選。它的值是一個布爾值,表示是否容許發送Cookie。默認狀況下,Cookie不包括在CORS請求之中。設爲true,即表示服務器明確許可,Cookie能夠包含在請求中,一塊兒發給服務器。這個值也只能設爲true,若是服務器不要瀏覽器發送Cookie,刪除該字段便可。

相關文章
相關標籤/搜索