【问题标题】:AWS Serverless API RequestAWS 无服务器 API 请求
【发布时间】:2019-03-08 19:43:00
【问题描述】:

每当我开始在我的函数上使用 AWS_IAM 授权方时,我的 API GET 请求(来自 Web 客户端)都会收到 No 'Access-Control-Allow-Origin' header is present on the requested resource. 并且我会收到 403 状态代码。当我删除 aws_iam 授权方时,API 请求(通过同一个 Web 客户端发出)成功。所以我很确定这实际上不是 CORS 错误,因为我已经仔细检查了我的 API 是否启用了 cors。我不确定我是否错误地使用了 AWS Javascript SDK,或者我没有在 serverless.yml 配置中为 AWS_IAM 生成正确的角色。

当我使用来自 AWS 的个人访问密钥运行来自邮递员的请求时,请求成功。当我控制台记录来自 AWS.config.credentials 的密钥并在邮递员中使用这些密钥时,请求会收到无效令牌错误消息。也许我没有为我的联合身份池生成正确的角色?

我在前端使用aws4来签署请求,我使用axios来发出请求。

有什么想法吗?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway serverless aws-iam aws-serverless


    【解决方案1】:

    Axios 将发出飞行前请求。这是一个OPTIONS 类型,在发出GET 请求之前需要200 个响应。它还需要返回 CORS 头:

    Access-Control-Allow-Origin: *
    

    Postman 不会自动发出相同的调用,但您可以使用它来测试该请求。确保您的 API 接受该路由的 OPTIONS 请求方法,并且它返回带有 CORS 标头的空 200 响应,我认为您会很高兴。

    AFAIK,OPTIONS 请求不需要经过身份验证。只要给绿灯。可能是您的客户端调用此端点作为正在验证的 OPTIONS 请求,增加了第二层混乱,或者您可能需要添加 Access-Control-Allow-Headers 以允许 Authorisation 类型标头(如果 AWS 是使用一个。

    如果不进行调试,很难提供更多信息,但我会从 OPTIONS 请求开始。

    【讨论】:

    • OPTIONS 请求似乎成功并得到了正确的响应。我开始相信我的 AWS 联合身份被授予访问我的 API 网关的权限存在问题。
    • 嗯。您要发送哪些标头以通过邮递员进行身份验证?它们是否包含在允许的标头 CORS 规则中?还是 OPTIONS req 不需要身份验证?
    • OPTIONS 请求不需要身份验证。
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多