簡體   English   中英

如何使用lambda代理集成激活將CORS標頭添加到AWS API網關響應

[英]How to add CORS header to AWS API Gateway response with lambda proxy integration activate

我使用lambda作為AWS API Gateway的后端,使用lambda代理集成,並希望將CORS添加到響應頭中。

根據文件:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

但是,您必須依賴后端才能返回Access-Control-Allow-Origin標頭,因為代理集成已禁用集成響應。

如何使用Python在我的lambda函數中對其進行編程。

您需要向api網關添加方法“options”並使用代理lambda ... return

result.headers = { "Access-Control-Allow-Origin": "domain.com" }

所以當瀏覽器首先調用服務器的選項時,它將返回CORS頭。

問題是,默認情況下你的lambda方法將被調用為“any”方法,所以你需要更改默認的方法來獲取,發布或任何你需要的方法

注意:您也可以使用相同的方法,如任何或選項,獲取,發布,如果是選項調用,則只返回狀態200和cors標頭。 這取決於你是否使用或不使用auth方法獲取,發布等

Lambda控制台中有一個選項“啟用CORS”,如果你只是使用lambda並沒有什么奇怪的

要創建OPTIONS方法,您可以從Gateway啟用它

  1. 導航至Gateaway,從左側選擇資源
  2. 選擇端點,在頂部會有一個按鈕“Action”,在那里你需要選擇“Enable CORS”,保存設置。
  3. 部署網關。

它將在資源(端點)上創建方法OPTIONS

對於GET / POST其他HTTP謂詞,如果是python,則需要從代碼中管理它

return {
    'statusCode': "200",
    'body': json.dumps({"test" : "123"}),
    'headers': {
        "Content-Type" : "application/json",
        "Access-Control-Allow-Origin" : "*",
        "Allow" : "GET, OPTIONS, POST",
        "Access-Control-Allow-Methods" : "GET, OPTIONS, POST",
        "Access-Control-Allow-Headers" : "*"
    }
}

對於其他未處理的情況,如IntegrationTimeout(504)或代碼中的錯誤(502),您可以在API網關級別配置默認響應標頭。 參考默認響應標頭:具有代理集成的AWS API網關

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM