【问题标题】:amplify 403 comes up that too with a CORS error放大 403 也出现了 CORS 错误
【发布时间】:2019-05-03 20:26:36
【问题描述】:

通过 Amplify CLI 添加了一个 API,该 API 调用读取发电机表的 lambda。

在 AWS 中部署后的第二天,它运行良好。今天早上起来 抛出 403 错误,没有进行任何更改:

获取 https://xxnxxtfxx.execute-api.eu-west-1.amazonaws.com/Prod/items 403

访问 XMLHttpRequest 在 'https://xxnxxtfxx.execute-api.eu-west-1.amazonaws.com/Prod/items' 从原产地 ''http://myproject-20181130113531--hostingbucket.s3-website-eu-west-1.amazonaws.com'' 已被 CORS 政策阻止:无“访问控制允许来源” 请求的资源上存在标头。

观察/行动

  • 确保在 API Gateway 上启用了 CORS,重新部署 API。

  • 从 API Gateway 测试 API 成功,它正确调用了 Lambda 函数

  • Amplify 服务确实创建了用户对象,并在本地存储中持久化
  • 在开发人员工具下调用 OPTIONS 看起来也不错:

    常规设置:

  • 请求网址:https://xxnxxtfxx.execute-api.eu-west-1.amazonaws.com/Prod/items

  • 请求方法:选项
  • 状态码:200

    响应标头:

  • access-control-allow-headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
  • 访问控制允许方法:DELETE、GET、HEAD、OPTIONS、PATCH、POST、PUT
  • 访问控制允许来源:*`

想知道为什么 403 会出现 CORS 错误。 有什么想法吗?让我感到困惑和害怕的是 在我醒来几个小时后没有任何变化,一切都失败了:-(

【问题讨论】:

    标签: amazon-web-services aws-amplify amplifyjs


    【解决方案1】:

    我遇到了同样的错误(并遵循相同的操作)。就我而言,我没有通过跳过 init 参数在 Amplify post call 中传递正确的参数。我通过传递带有空主体的 myInit 参数来解决此问题:

    let myInit = {
        body: {}
    }
    
    API.post(apiName, path, myInit)
    

    【讨论】:

      【解决方案2】:

      这是您的解决方案: https://serverless-stack.com/chapters/handle-api-gateway-cors-errors.html

      答案是您的响应需要在标题中添加Access-Control-Allow-OriginAccess-Control-Allow-Headers

      很遗憾,当您的 API 返回错误时,它不会在标头中包含这些值。您需要创建网关响应以在错误响应中启用这些标头。

      希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 2019-12-13
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 2022-01-05
        • 2017-04-27
        • 1970-01-01
        相关资源
        最近更新 更多