AWS CORS 没有“Access-Control-Allow-Origin”错误 [关闭]

Posted

技术标签:

【中文标题】AWS CORS 没有“Access-Control-Allow-Origin”错误 [关闭]【英文标题】:AWS CORS no "Access-Control-Allow-Origin" error [closed] 【发布时间】:2021-05-06 21:59:13 【问题描述】:

我正在尝试使用 JSON 向 AWS API 网关发送获取请求。这对邮递员来说很好用,但是当我尝试使用 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 的情况下将数据发布到 AWS?

【问题讨论】:

'我已从 AWS 启用 CORS 并将 Access-Control-Allow-Origin 设置为通配符'在这种情况下,您没有正确遵循指南或 URL您通过 CORS 启用的与请求发起者不匹配。在 AWS 上启用 CORS 是解决您问题的正确方法。 @RoryMcCrossan 你能澄清一下吗?启用 CORS 后,AWS 会自动将 Access-Control-Allow-Origin 设置为通配符。根据这个docs.aws.amazon.com/apigateway/latest/developerguide/…,这应该是所有需要的。从 API 网关页面我可以看到带有 Access-Control-Allow-Headers、Access-Control-Expose-Headers、Access-Control、Allow-Origin 和 Access-Control-Allow-Methods 的 OPTIONS 方法。我错过了什么? 您需要将您的请求域的URL设置为Allow-Origin,并在其他属性中根据需要设置标题和方法。 【参考方案1】:

您需要确保您的请求响应与表单匹配:


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


【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于AWS CORS 没有“Access-Control-Allow-Origin”错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AWS API 网关 CORS [关闭]

Node.js---使用Express写接口

无法在 Laravel 5 中为特定路线添加 CORS

如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?

AWS API Gateway CORS 问题

AWS API Gateway API 密钥与 Cors