![](/img/trans.png)
[英]How to add CORS header in Lambda/Node JS for API Gateway AWS
[英]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啟用它
它將在資源(端點)上創建方法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.