91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用map實現Nginx允許多個域名跨域

發布時間:2020-10-26 14:10:44 來源:億速云 閱讀:522 作者:Leah 欄目:開發技術

使用map實現Nginx允許多個域名跨域?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

常見的 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允許多個域名跨域問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商河县| 莱芜市| 衡山县| 仁化县| 卓资县| 河津市| 碌曲县| 阳谷县| 金门县| 刚察县| 都匀市| 清流县| 策勒县| 章丘市| 思南县| 葫芦岛市| 定日县| 鄂尔多斯市| 青岛市| 宾川县| 漾濞| 依安县| 太仆寺旗| 松溪县| 建瓯市| 禹州市| 荥阳市| 绥棱县| 呼伦贝尔市| 房山区| 称多县| 班戈县| 鹤壁市| 天祝| 公主岭市| 集安市| 定日县| 乐清市| 三都| 秭归县| 邢台县|