好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 如何利用map實現Nginx允許多個域名跨域

如何利用map實現Nginx允許多個域名跨域

熱門標簽:百度地圖底圖標注 撫州市城區地圖標注 電銷智能機器人試用 智能電銷機器人真的有用么 高德地圖標注足跡怎么打標 企業辦理400電話收費標準 新鄉牧野400電話申請 中國地圖標注上各個省 激光標記地圖標注

常見的 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';,但此時會發現瀏覽器報錯,說該參數為 true 時,allow origin 不能設置為 ‘*‘,如果手動指定了多個域名,那同樣會被瀏覽器提示錯誤,說 allow origin 不能設置多個,這些是協議層面的限制

使用 map

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

一個示例配置如下:

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 的內部變量,用于獲取請求頭中的 origin

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

總結

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

標簽:邯鄲 忻州 南通 西安 臨汾 辛集 延安 海西

巨人網絡通訊聲明:本文標題《如何利用map實現Nginx允許多個域名跨域》,本文關鍵詞  如何,利用,map,實現,Nginx,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何利用map實現Nginx允許多個域名跨域》相關的同類信息!
  • 本頁收集關于如何利用map實現Nginx允許多個域名跨域的相關信息資訊供網民參考!
  • 推薦文章