2016-05-16 57 views
1

这AWS API-CORS网关的问题是让我完全疯了在状态400

我试着打电话从我从API网关与IAM访问限制的角度应用一个API网关休息服务。所以我需要使用IAM身份验证进行调用。我正在使用我已经获得的临时IAM凭证

我对该服务的呼叫失败,说没有Access-Control-Allow-Origin标头。当我尝试从邮递员打电话给我的服务时,我没有在响应中看到所需的标题。在我的邮递员电话上,由于我的身份验证失败,我得到了一个403状态,但我仍然期待标题。如果我在其工作的方法上删除了IAM认证,我会返回响应字符串和标题即时消息寻找。

我在这里失踪了什么?当然,即使我的身份验证失败了,我仍然必须取回该头文件,以便我可以看到显示身份验证失败的消息。

任何帮助将非常感激

感谢

+0

我尝试过的最新的事情是创建一个没有身份验证的桥接api-gateway服务,位于我的调用和经过身份验证的服务之间。负面情况起作用,如果我的身份验证失败,我得到的Cors标题回来,但我的积极的情况并没有。我收到一个错误:“我们计算的请求签名与您提供的签名不匹配请检查您的AWS秘密访问密钥和签名方法请参阅服务文档以获取详细信息”_ – 3uPh0riC

回答

0

请确保你对你的选择方法启用AWS_IAM认证,否则浏览器将无法进行飞行前的请求,您的请求将失败。您应该仍然在其他方法上启用AWS_IAM。

+0

谢谢我检查了,但那不是。我实际上可以做一个OPTIONS调用,然后我找回这些头文件,但只要我调用POST方法,它就不会返回'Access-Control-Allow-Headers→Content-Type,X-Amz-Date,Authorization,X- Api-Key,X-Amz-Security-Token 访问控制 - 允许方法→POST,选项 访问控制 - 允许来源→*' – 3uPh0riC

+0

这似乎与失败我的身份验证有关。为了测试,我将我的管理员IAM密钥的详细信息输入邮递员并发出了请求,并且我正确收回了邮件头。当我改变一个数字以失败的身份验证我不。我显然仍然需要它,因为现在的情况我不能看到正确的错误,因为我看到的只是CORS失败。 – 3uPh0riC

+0

这是CORS支持的一个限制。我们目前正在追踪我们积压的项目以改善这一点。到目前为止,如果通话未通过身份验证,您将看到CORS错误,而不是验证错误。 –

1

this link on the AWS forum似乎有是与IM正是在这里遇到一个什么问题开......不知道什么当前即时寻找可能

+0

请注意,此问题已通过API网关中的一项新功能予以更正:http://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html –

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网关将生成一个403响应。 此响应不是由您的API定义定义的,因为该API请求在达到您的API处理要求之前被API网关拒绝。 这就是为什么你的CORS配置不适用于