人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

如何利用map實現(xiàn)Nginx允許多個域名跨域

發(fā)布日期:2022-01-14 14:50 | 文章來源:源碼之家

常見的 Nginx 配置允許跨域

server {
  listen    11111;
  server_name localhost;
  location ~ /xxx/xx {
    if ($request_method = 'OPTIONS') {
      return 204;
    }
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    proxy_pass http://1.2.3.4:5678;
  }
}

指定 Access-Control-Allow-Origin 為 ‘*' ,即為最簡單暴力的允許所有訪問跨域

允許 Cookie

有些場景下需要使用 Cookie,這時 Nginx 需要加一句 add_header Access-Control-Allow-Credentials 'true';,但此時會發(fā)現(xiàn)瀏覽器報錯,說該參數(shù)為 true 時,allow origin 不能設置為 ‘*‘,如果手動指定了多個域名,那同樣會被瀏覽器提示錯誤,說 allow origin 不能設置多個,這些是協(xié)議層面的限制

使用 map

在 Nginx 中可以使用 map 得到一個自定義變量,簡單的使用可以參考官方文檔,在上面提到的場景中,可以對請求中的 origin 做一個過濾處理,把符合要求的請求域名放到一個變量中,在設置 allow origin 時使用該變量就能實現(xiàn)一個動態(tài)的、多個的允許跨域域名

一個示例配置如下:

map $http_origin $allow_origin {
  default "";
  "~^(https?://localhost(:[0-9]+)?)" $1;
  "~^(https?://127.0.0.1(:[0-9]+)?)" $1;
  "~^(https?://172.10(.[\d]+){2}(:[0-9]+)?)" $1;
  "~^(https?://192.168(.[\d]+){2}(:[0-9]+)?)" $1;
}
server {
  listen    11111;
  server_name localhost;
  location ~ /xxx/xx {
    if ($request_method = 'OPTIONS') {
      return 204;
    }
    add_header Access-Control-Allow-Origin $allow_origin;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    add_header Access-Control-Allow-Credentials 'true';
    proxy_pass http://1.2.3.4:5678;
  }
}

解釋說明:

$http_origin 是 Nginx 的內(nèi)部變量,用于獲取請求頭中的 origin

$allow_origin 是可以自定義的變量名

總結

到此這篇關于如何利用map實現(xiàn)Nginx允許多個域名跨域的文章就介紹到這了,更多相關map實現(xiàn)Nginx允許多個域名跨域內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部