本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CORS API Gateway RESTAPIs中針對 的
跨來源資源共用 (CORS)
決定是否啟用CORS支援
跨來源HTTP請求是針對下列項目提出的請求:
-
不同的網域 (例如,從
example.com
到amazondomains.com
) -
不同的子網域 (例如,從
example.com
到petstore.example.com
) -
不同的連接埠 (例如,從
example.com
到example.com:10777
) -
不同的通訊協定 (例如,從
https://example.com
到http://example.com
)
如果您無法存取 API並收到包含 的錯誤訊息Cross-Origin Request Blocked
,您可能需要啟用 CORS。
跨來源HTTP請求可分為兩種類型:簡單請求和非簡單請求。
CORS 為簡單請求啟用
如果下列所有條件都為 true,則HTTP請求非常簡單:
-
它會根據僅允許
GET
、HEAD
和POST
請求API的資源發出。 -
如果它是
POST
方法請求,則必須包含Origin
標頭。 -
請求承載內容類型為
text/plain
、multipart/form-data
或application/x-www-form-urlencoded
。 -
請求不包含自訂標頭。
-
任何 Mozilla CORS 文件中列出的簡單請求
的其他要求。
對於簡單的跨來源 POST
方法請求,來自您資源的回應需要包含標頭 Access-Control-Allow-Origin: '*'
或 Access-Control-Allow-Origin:
。'origin'
所有其他跨來源HTTP請求都是非簡單請求。
CORS 為非簡單請求啟用
如果 API的資源收到非簡單請求,您必須根據您的整合類型啟用其他CORS支援。
CORS 啟用非代理整合
對於這些整合,CORS通訊協定
若要建立預檢回應:
建立具有模擬整合的
OPTIONS
方法。-
將下列回應標頭新增至 200 方法回應:
-
Access-Control-Allow-Headers
-
Access-Control-Allow-Methods
-
Access-Control-Allow-Origin
-
-
將整合傳遞行為設定為
NEVER
。在這種情況下,未映射的內容類型的方法請求將被拒絕,並具有 HTTP 415 個不支援的媒體類型回應。如需詳細資訊,請參閱整合傳遞行為。 -
輸入回應標頭的值。若要允許所有來源、所有方法和常見的標頭,請使用下列標頭值:
-
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
-
Access-Control-Allow-Methods: '*'
-
Access-Control-Allow-Origin: '*'
-
建立飛行前請求後,您必須針對至少所有 200 個回應,傳回所有CORS已啟用 方法的 Access-Control-Allow-Origin: '*'
或 Access-Control-Allow-Origin:
標頭。'origin'
使用 CORS啟用非代理整合 AWS Management Console
您可以使用 AWS Management Console 來啟用 CORS。API Gateway 會建立OPTIONS
方法,並將Access-Control-Allow-Origin
標頭新增至現有的方法整合回應。這並不總是有效的,有時您需要手動修改整合回應,才能針對至少所有 200 個回應傳回所有CORS已啟用 方法的Access-Control-Allow-Origin
標頭。
啟用代理整合的CORS支援
對於 Lambda 代理整合或HTTP代理整合,您的後端負責傳回 Access-Control-Allow-Origin
、 Access-Control-Allow-Methods
和 Access-Control-Allow-Headers
標頭,因為代理整合不會傳回整合回應。
下列 Lambda 函數範例會傳回所需的CORS標頭: