本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
跨來源資源共用支援和 Amazon EC2
Amazon EC2 API 支援跨來源資源共用 (CORS)。CORS 會定義一種方式,讓載入某個網域的用戶端 Web 應用程式與不同網域中的資源互動。如需詳細資訊,請前往跨來源資源共用 W3C 建議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)
簡單請求
以下是定義簡單或實際請求的條件:
-
請求僅使用
GET或POSTHTTP 方法。如果使用POST方法,則Content-Type只能是下列其中一項:application/x-www-form-urlencoded、multipart/form-data或text/plain。 -
請求不會設定自訂標頭,例如
X-Other-Header。
Amazon EC2 允許來自任何原始伺服器的請求。將 Access-Control-Allow-Credentials值設定為 true(其中 XMLHttpRequest.withCredentials = true) 以嘗試使用瀏覽器登入資料的任何 GET或 POST請求將會失敗。
以下資訊說明 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-urlencoded、multipart/form-data或text/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:指出提出實際請求時允許使用的方法。允許使用下列方法:GET、POST、DELETE、OPTIONS和PUT。這也取決於您呼叫 Amazon EC2 API 的方式;例如,使用查詢 API 或使用 REST。 -
Access-Control-Allow-Headers:指出可在實際請求中使用的標頭。Amazon EC2 接受預檢請求中的任何標頭。如果 HTTP 標頭與實際請求無關,則會忽略它們。