View a markdown version of this page

跨來源資源共用支援和 Amazon EC2 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

跨來源資源共用支援和 Amazon EC2

Amazon EC2 API 支援跨來源資源共用 (CORS)。CORS 會定義一種方式,讓載入某個網域的用戶端 Web 應用程式與不同網域中的資源互動。如需詳細資訊,請前往跨來源資源共用 W3C 建議。透過 Amazon EC2 的 CORS 支援,您可以建置使用 Amazon EC2 API 的豐富用戶端 Web 應用程式。例如,假設您正在託管網站 mywebsite.example.com,而且您想要在網頁上使用 JavaScript 向 Amazon EC2 API 提出請求。一般而言,瀏覽器會阻止 JavaScript 允許這些請求,但使用 CORS,您可以從 進行跨來源 Amazon EC2 API 呼叫mywebsite.example.com

CORS 已針對 Amazon EC2 API 啟用,並準備好供您使用。您不需要執行任何其他組態步驟即可開始使用此功能。您對 Amazon EC2 API 進行呼叫的方式沒有變更;它們仍然必須使用有效的 AWS 登入資料進行簽署,以確保 AWS 可以驗證請求者。如需詳細資訊,請參閱《IAM 使用者指南》中的簽署 AWS API 請求

Amazon EC2 API 中的 CORS 實作是標準化的。您的應用程式可以將簡單的請求傳送至 Amazon EC2 API,或根據請求的內容,傳送預檢請求後接著實際請求。Amazon EC2 允許來自任何原始伺服器的請求

如需 CORS 的詳細資訊及其運作方式範例,請前往 Mozilla 開發人員網路的下列文章:HTTP 存取控制 (CORS)

簡單請求

以下是定義簡單或實際請求的條件:

  • 請求僅使用 GETPOST HTTP 方法。如果使用 POST方法,則 Content-Type只能是下列其中一項:application/x-www-form-urlencodedmultipart/form-datatext/plain

  • 請求不會設定自訂標頭,例如 X-Other-Header

Amazon EC2 允許來自任何原始伺服器的請求。將 Access-Control-Allow-Credentials值設定為 true(其中 XMLHttpRequest.withCredentials = true) 以嘗試使用瀏覽器登入資料的任何 GETPOST請求將會失敗。

以下資訊說明 Amazon EC2 的請求標頭:

簡單請求標頭值
  • Origin:指定想要存取資源的網域 (在此情況下,資源為 Amazon EC2)。這由瀏覽器插入到跨來源請求中。

下列資訊說明 Amazon EC2 在簡單或實際請求後傳回 (或未傳回) 的回應標頭:

簡單回應標頭值
  • Access-Control-Allow-Origin:指定可存取資源的網域 (在此情況下,資源為 Amazon EC2)。這一律會以 * 值傳回。因此,Amazon EC2 允許任何跨網域原始伺服器,絕不允許瀏覽器登入資料,例如 Cookie。

  • Access-Control-Allow-Credentials:指出瀏覽器登入資料是否可用於提出實際請求。這永遠不會傳回。因此,瀏覽器應將值解譯為 Access-Control-Allow-Credentials: false

預檢請求

如果您的請求內容符合下列條件,則會檢查您的請求是否應傳送實際請求。預檢請求會先使用 OPTIONS方法將 HTTP 請求傳送至資源 (在此案例中為 Amazon EC2)。

以下是定義預檢請求的條件:

  • 請求使用 GET或 以外的 HTTP 方法POST。不過,如果使用 POST方法,則 Content-Type 不是下列其中一項:application/x-www-form-urlencodedmultipart/form-datatext/plain

  • 請求會設定自訂標頭,例如 X-Other-Header

Amazon EC2 CORS 實作允許任何標頭,並允許實際請求中的任何原始伺服器。

下列資訊說明 Amazon EC2 預檢請求的請求標頭:

預檢請求標頭值
  • Origin:指定想要存取資源的網域 (在此情況下,資源為 Amazon EC2)。這由瀏覽器插入到跨來源請求中。

  • Access-Control-Request-Method:用於瀏覽器實際請求的 HTTP 方法。

  • Access-Control-Request-Headers:要在實際的跨來源請求中傳送的自訂標頭。

下列資訊是關於 Amazon EC2 在預檢請求後傳回 (或未傳回) 的回應標頭:

預檢回應標頭值
  • Access-Control-Allow-Origin:指定可存取資源的網域 (在此情況下,資源為 Amazon EC2)。這一律會以 * 值傳回。因此,Amazon EC2 允許任何跨網域原始伺服器,絕不允許瀏覽器登入資料,例如 Cookie。

  • Access-Control-Allow-Credentials:指出瀏覽器登入資料是否可用於提出實際請求。Amazon EC2 永遠不會傳回此值。因此,瀏覽器應將值解譯為 Access-Control-Allow-Credentials: false

  • Access-Control-Expose-Headers:允許標頭公開至瀏覽器。Amazon EC2 永遠不會傳回此值。因此,請求的網域無法讀取來自 Amazon EC2 的傳回標頭。

  • Access-Control-Max-Age:指定預檢請求結果可以快取多久。值設定為 1800 秒 (30 分鐘)。

  • Access-Control-Allow-Methods:指出提出實際請求時允許使用的方法。允許使用下列方法:GETPOSTDELETEOPTIONSPUT。這也取決於您呼叫 Amazon EC2 API 的方式;例如,使用查詢 API 或使用 REST。

  • Access-Control-Allow-Headers:指出可在實際請求中使用的標頭。Amazon EC2 接受預檢請求中的任何標頭。如果 HTTP 標頭與實際請求無關,則會忽略它們。