Share via


設定 Azure Container Apps 的跨原始來源資源分享 (CORS)

根據預設,透過瀏覽器對不符合頁面原始網域之網域的要求會遭到封鎖。 若要避免部署至 Container Apps 的服務有此限制,您可以啟用 CORS

本文說明如何在容器應用程式中啟用和設定 CORS。

啟用 CORS 時,您可以設定下列設定:

設定 說明
允許認證 指出是否要傳回 Access-Control-Allow-Credentials 標頭。
最大存留期 設定 Access-Control-Max-Age 回應標頭,以指出可快取 CORS 正式發行前小眾測試前要求的結果長度(以秒為單位)。
允許的原始來源 允許跨原始來源要求的來源清單(例如 , https://www.contoso.comAccess-Control-Allow-Origin控制回應標頭。 使用 * 來允許所有專案。
允許的方法 跨原始來源要求中允許的 HTTP 要求方法清單。 Access-Control-Allow-Methods控制回應標頭。 使用 * 來允許所有專案。
允許的標題 跨原始來源要求中允許的標頭清單。 Access-Control-Allow-Headers控制回應標頭。 使用 * 來允許所有專案。
公開標頭 根據預設,並非所有回應標頭都會在跨原始來源要求中公開給用戶端 JavaScript 程式碼。 公開的標頭是額外的標頭伺服器可以包含在回應中。 Access-Control-Expose-Headers控制回應標頭。 使用 * 來公開全部。
屬性 說明 類型
allowCredentials 指出是否要傳回 Access-Control-Allow-Credentials 標頭。 boolean
maxAge 設定 Access-Control-Max-Age 回應標頭,以指出可快取 CORS 正式發行前小眾測試前要求的結果長度(以秒為單位)。 整數
allowedOrigins 允許跨原始來源要求的來源清單(例如 , https://www.contoso.comAccess-Control-Allow-Origin控制回應標頭。 使用 * 來允許所有專案。 字串陣列
allowedMethods 跨原始來源要求中允許的 HTTP 要求方法清單。 Access-Control-Allow-Methods控制回應標頭。 使用 * 來允許所有專案。 字串陣列
allowedHeaders 跨原始來源要求中允許的標頭清單。 Access-Control-Allow-Headers控制回應標頭。 使用 * 來允許所有專案。 字串陣列
exposeHeaders 根據預設,並非所有回應標頭都會在跨原始來源要求中公開給用戶端 JavaScript 程式碼。 公開的標頭是額外的標頭伺服器可以包含在回應中。 Access-Control-Expose-Headers控制回應標頭。 使用 * 來公開全部。 字串陣列

如需詳細資訊,請參閱來自擷取要求 之有效 HTTP 回應的 Web 超文字應用程式技術工作組 (WHATWG) 參考。

啟用和設定 CORS

  1. 移至Azure 入口網站中的容器應用程式。

  2. 在 [設定] 功能表下,選取 [CORS ]。

    Screenshot showing how to enable CORS in the Azure portal.

啟用 CORS 後,您可以新增、編輯和刪除 [允許的來源 ]、[允許的方法 ]、 [允許的標頭 ] 和 [公開標頭] 的值

若要允許方法、標頭或原始來源的任何可接受的值,請輸入 * 作為值。

注意

透過命令列更新組態設定會覆寫目前的設定。 請務必將目前的設定併入您想要設定的任何新 CORS 值,以確保您的組態保持一致。

下列程式碼代表您在設定容器應用程式時,CORS 設定採用于 ARM 範本中的表單。

{ 
  ... 
  "properties": { 
      ... 
      "configuration": { 
         ... 
          "ingress": { 
              ... 
              "corsPolicy": { 
                "allowCredentials": true,
                "maxAge": 5000,
                "allowedOrigins": ["https://example.com"], 
                "allowedMethods": ["GET","POST"], 
                "allowedHeaders": [], 
                "exposeHeaders": []
              } 
          } 
      } 
  } 
}

下一步