【问题标题】:AWS Api-Gateway CORS issue on status 400状态 400 上的 AWS Api-Gateway CORS 问题
【发布时间】:2016-09-12 14:03:46
【问题描述】:

这让我彻底疯了

我试图从一个 Angular 应用程序调用一个 api-gateway 休息服务,该应用程序限制了具有 IAM 访问权限的 API-GATEWAY。所以我需要使用 IAM 身份验证来调用。我正在使用我已经获得的临时 IAM 凭证

我对服务的调用失败,说没有 Access-Control-Allow-Origin 标头。当我尝试从邮递员那里调用我的服务时,我没有在响应中看到所需的标题。在我的邮递员电话中,我得到了 403 状态,因为我的身份验证实际上失败了,但我仍然期待标题。如果我在它工作的方法上删除 IAM 身份验证,我会返回响应字符串和我正在寻找的标头。

我在这里缺少什么?当然,即使我的身份验证失败,我仍然必须取回该标头,这样我才能真正看到说明您的身份验证失败的消息。

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 我尝试的最新方法是在我的呼叫和经过身份验证的服务之间创建一个无需身份验证的桥接 api-gateway 服务。负面情况有效,如果我的身份验证失败,我会取回 cors 标头,但我的正面情况没有。我收到错误:“我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档”

标签: amazon-web-services cors aws-api-gateway


【解决方案1】:

请确保您不在您的 OPTIONS 方法上启用 AWS_IAM 身份验证,否则浏览器将无法发出飞行前请求并且您的请求将失败。您仍应在其他方法上启用 AWS_IAM。

【讨论】:

  • 谢谢我检查过,但不是这样。我实际上可以进行 OPTIONS 调用,然后我会取回这些标头,但是一旦我调用我的 POST 方法,它就不会回来Access-Control-Allow-Headers →Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token Access-Control-Allow-Methods →POST,OPTIONS Access-Control-Allow-Origin →*
  • 这似乎与我的身份验证失败有关。为了测试,我将我的管理员 IAM 密钥详细信息输入邮递员并发出请求,我正确地取回了标题。当我更改数字以使身份验证失败时,我不会。我显然仍然需要它,因为现在的情况我看不到正确的错误,因为我看到的只是 CORS 故障。
  • 这是 CORS 支持的当前限制。我们目前正在跟踪积压中的一个项目以改进这一点。截至目前,如果调用未通过身份验证,您将看到 CORS 错误而不是身份验证错误。
【解决方案2】:

来自this link on the AWS forum 似乎有一个未解决的问题与我在这里遇到的确切情况有关......不确定我目前正在寻找的内容是否可行

【讨论】:

【解决方案3】:

您是否允许您的 Cognito 角色访问 API 端点?

对于 Cognito 角色,您必须使用与此类似的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:<API_REGION>:<ACCOUNT_ID>:<API_ID>/*"
            ]
        }
    }
}

如果您对端点使用 IAM 身份验证并且不允许 Cognito 角色访问您的 API,API Gateway 将生成 403 响应。 此响应未由您的 API 定义定义,因为该请求在到达 API 处理点之前已被 API Gateway 拒绝。 这就是您的 CORS 配置不适用的原因。

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2018-08-21
    • 2020-06-05
    • 2020-02-20
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多