AWS CORS 没有 "Access-Control-Allow-Origin" 错误

AWS CORS no "Access-Control-Allow-Origin" error

我正在尝试使用 JSON 向 AWS API 网关发送获取请求。这在 Postman 中工作正常,但是当我尝试使用 jquery 发送相同的请求时,我收到错误 has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 我已经从 AWS 启用了 CORS,并将 Access-Control-Allow-Origin 设置为通配符。 我遵循了本指南 https://medium.com/@peorth/using-jquery-to-access-a-aws-api-gateway-cors-afa11fd27f2a 并添加了 crossDomain: true 但它没有任何改变。 这是我的 jquery 请求:

var settings = {
        "url": "https://XXXX.execute-api.eu-west-2.amazonaws.com/default/function",
        "crossDomain": "true",
        "method": "GET",
        "timeout": 0,
        "headers": {
            "Content-Type": "application/json",
            "X-Amz-Content-Sha256": "XXXXXXX",
            "X-Amz-Date": "20210201T172448Z",
            "Authorization": "XXXX, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=XXXXXXX"
        },
        "data": JSON.stringify({"key":"1","id":"TST","action":"singleLed","value":r+""+g+""+b}),
        };

        $.ajax(settings).done(function (response) {
            console.log(response);
        });

我完全没有想法。我怎样才能让 API 正常工作,或者有没有其他方法可以在不涉及 CORS 的情况下将 post 数据发送到 AWS?

您需要确保您的请求响应符合以下格式:

{
    "statusCode": 200,
    "isBase64Encoded": False,
    "headers":{
       "Access-Control-Allow-Origin":"*",
       "Access-Control-Allow-Methods":"GET"
    },
    "body":"success"
...
}

开始使用了。 当我从 AWS 启用 CORS 时,它实际上并没有将所有必要的 header 添加到集成响应中。一旦我编辑了那些 header 映射并删除了身份验证以使用通配符,一切都开始工作了。