状态400上的AWS Api-Gateway CORS问题

时间:2016-05-16 17:27:42

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

这让我非常疯狂

我试图从一个角度应用程序调用api-gateway rest服务,我已经限制了API-GATEWAY和IAM访问。所以我需要使用IAM身份验证进行调用。我正在使用我已经获得的临时IAM凭证

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

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

非常感谢任何帮助

由于

3 个答案:

答案 0 :(得分:1)

来自this link on the AWS forum似乎有一个与我在这里遇到的确切内容有关的未解决问题...不确定我现在正在寻找什么

答案 1 :(得分:1)

您是否允许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处理完毕。 这就是您的CORS配置不适用的原因

答案 2 :(得分:0)

请确保您方法启用了AWS_IAM身份验证,否则浏览器将无法提出转机前请求,您的请求将失败。您仍应在其他方法上启用AWS_IAM。