跨源資源共享 (CORS) 是一項瀏覽器安全功能,該功能限制從在瀏覽器中運行的腳本啓動的跨源 HTTP 請求。若是您的 REST API 的資源接收非簡單跨源 HTTP 請求,您須要啓用 CORS 支持。html
當瀏覽器接收非簡單 HTTP 請求時,CORS 協議將要求瀏覽器在發送實際請求以前向服務器發送一個預檢請求,並等待服務器的批准(或請求憑證)。預檢請求 將向您的 API 顯示爲 HTTP 請求:後端
包含一個 Origin
標頭。api
使用 OPTIONS
方法。瀏覽器
包含如下標頭:安全
Access-Control-Request-Method
服務器
Access-Control-Request-Headers
cors
所以,爲了支持 CORS,REST API 資源須要實施一個 OPTIONS
方法,該方法能夠響應 OPTIONS
預檢請求,該請求至少具備由 Fetch 標準強制執行的如下響應標頭:ide
Access-Control-Allow-Methods
fetch
Access-Control-Allow-Headers
ui
Access-Control-Allow-Origin
啓用 CORS 支持的方式取決於您的 API 的集成類型。
您可使用 API Gateway 控制檯爲已建立的 REST API 資源上的一個或全部方法啓用 CORS 支持。
重要
資源能夠包含子資源。爲某個資源及其方法啓用 CORS 支持不會以遞歸方式爲子資源及其方法啓用它。
在 REST API 資源上啓用 CORS 支持
經過 https://console.aws.amazon.com/apigateway 登陸 API Gateway 控制檯。
從 API 列表中選擇 API。
在 Resources (資源) 下選擇一個資源。這將爲資源上的全部方法啓用 CORS。
或者,您也能夠在資源下選擇一個方法,僅爲此方法啓用 CORS。
從操做下拉菜單中選擇 Enable CORS (啓用 CORS)。
在 Enable CORS (啓用 CORS) 表單中,執行如下操做:
在 Access-Control-Allow-Headers 輸入字段中,鍵入客戶端必須在實際資源請求中提交的逗號分隔標頭列表的靜態字符串。使用控制檯提供的 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
標頭列表,或指定您本身的標頭。
將控制檯提供的 '*'
的值用做 Access-Control-Allow-Origin 標頭值,以容許來自全部源的訪問請求,或指定容許訪問該資源的源。
選擇 Enable CORS and replace existing CORS headers (啓用 CORS 並替換現有 CORS 標頭)。
重要
若是在代理集成中將以上說明應用於 ANY
方法,那麼將不會設置任何適用的 CORS 標頭。相反,您的後端必須返回適用的 CORS 標頭,例如 Access-Control-Allow-Origin
。
在 Confirm method changes (確認方法更改) 中,選擇 Yes, overwrite existing values (對,覆蓋現有值) 以確認新的 CORS 設置。
在 GET
方法上啓用 CORS 後,若是資源中沒有 OPTIONS
方法,則該方法將添加到資源中。OPTIONS
方法的 200
響應會自動配置爲返回三個 Access-Control-Allow-*
標頭,以完成預檢握手。此外,默認狀況下,實際 (GET
) 方法還會配置爲在 200 響應內返回 Access-Control-Allow-Origin
標頭。對於其餘類型的響應,若是您不但願返回 Cross-origin access
錯誤,您將須要手動對其進行配置,以返回帶有「*」或特定源的 Access-Control-Allow-Origin'
標頭。
在您的資源上啓用 CORS 支持後,您必須部署或從新部署 API 以使新設置生效。有關更多信息,請參閱從 API Gateway 控制檯部署 REST API。