啟用 CORS 支持意味着什么


啟用 CORS 支持意味着什么

當瀏覽器接收非簡單 HTTP 請求時,CORS 協議將要求瀏覽器在發送實際請求之前向服務器發送一個預檢請求,並等待服務器的批准(或請求憑證)。預檢請求 將向您的 API 顯示為 HTTP 請求:

  • 包含一個 Origin 標頭。

  • 使用 OPTIONS 方法。

  • 包含以下標頭:

    • Access-Control-Request-Method

    • Access-Control-Request-Headers

因此,為了支持 CORS,REST API 資源需要實施一個 OPTIONS 方法,該方法可以響應 OPTIONS 預檢請求,該請求至少具有由 Fetch 標准強制執行的以下響應標頭:

  • Access-Control-Allow-Methods

  • Access-Control-Allow-Headers

  • Access-Control-Allow-Origin

啟用 CORS 支持的方式取決於您的 API 的集成類型。

為模擬集成啟用 CORS 支持

對於模擬集成,您可創建一個 OPTIONS 方法以將所需的響應標頭(具有適當的靜態值)作為方法響應標頭返回,從而啟用 CORS。此外,每個實際啟用了 CORS 的方法還必須在至少其 200 次響應中返回 Access-Control-Allow-Origin:'request-originating server addresses' 標頭,其中標頭鍵的值設置為 '*'(任何源)或設置為允許訪問該資源的源。

為 Lambda 或 HTTP 非代理集成和 AWS 服務集成啟用 CORS 支持

對於 Lambda 自定義(非代理)集成、HTTP 自定義(非代理)集成或 AWS 服務集成,您可以通過使用 API Gateway 方法響應和集成響應設置來設置所需的標頭。API Gateway 將創建一個 OPTIONS 方法並嘗試將 Access-Control-Allow-Origin 標頭添加到您現有的方法集成響應中。這並不總是有用,有時您需要手動修改集成響應來適當地啟用 CORS。通常,這僅意味着手動修改集成響應將返回 Access-Control-Allow-Origin 標頭。

為 Lambda 或 HTTP 代理集成啟用 CORS 支持

對於 Lambda 代理集成或 HTTP 代理集成,您仍可以在 API Gateway 中設置所需的 OPTIONS 響應標頭。然而,您的后端將負責返回 Access-Control-Allow-Origin 和 Access-Control-Allow-Headers 標頭,因為代理集成不會返回集成響應。

 

在 GET 方法上啟用 CORS 后,如果資源中沒有 OPTIONS 方法,則該方法將添加到資源中。OPTIONS 方法的 200 響應會自動配置為返回三個 Access-Control-Allow-* 標頭,以完成預檢握手。此外,默認情況下,實際 (GET) 方法還會配置為在 200 響應內返回 Access-Control-Allow-Origin 標頭。對於其他類型的響應,如果您不希望返回 Cross-origin access 錯誤,您將需要手動對其進行配置,以返回帶有“*”或特定源的 Access-Control-Allow-Origin' 標頭。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM