簡體   English   中英

從Django調用AWS API Gateway的CORS錯誤

[英]CORS error calling AWS API Gateway from Django

我使用AWS Lambda和API網關構建了一個簡單的RESTful終端節點。 API網關已啟用CORS,並且客戶端正在按此處所述發送適當的標頭

客戶端應用程序是在Django中構建的,並使用JQuery:

 $.ajax({
    type: 'GET',
    url: baseUrl,
    crossDomain: true,
    contentType: 'application/json'
})

同樣,Lambda函數本身返回以下有效負載:

return {
    'statusCode': 200,
    'headers': {
        'Content-Type': 'application/json',
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Credentials": "true"
    },
    'body': json.dumps(json_response)
}

Chrome仍會引發CORS錯誤:

No 'Access-Control-Allow-Origin' header is present on the requested resource

我想念什么嗎?

我無法根據評論回答您的問題,但您可能缺少“ Access-Control-Allow-Headers”標頭。

{
    "headers" : {
        'Access-Control-Allow-Origin' : '*',
        'Access-Control-Allow-Headers':'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
        'Access-Control-Allow-Credentials' : True,
        'Content-Type': 'application/json'                        
    },
    "isBase64Encoded": False,
    "statusCode": 200,
    "body"  : json.dumps(json_response),
}

為此,您必須在API Gateway端點上使用LAMBDA_PROXY集成。

這里找到答案

在“網關響應”下,編輯默認的4xx設置,並添加響應頭'Access-Control-Allow-Origin':'*'

注意:一旦我從API得到了{ "message" : "forbidden" }響應,就需要在JQuery中的API調用中添加標頭:

 $.ajax({
    type: 'GET',
    url: baseUrl,
    crossDomain: true,
    headers: { "x-api-key": apiKey },
    contentType: 'application/json'
})

暫無
暫無

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

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