放大器403也产生了CORS误差



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

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

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

访问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网关上启用CORS,重新部署API。

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

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

    常规设置:

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

  • 请求方法:OPTIONS
  • 状态代码:200

    响应标头:

  • 访问控制允许标头:内容类型、X-Amz-Date、Authorization、X-Api-Key、X-Amz-Security-Token
  • 访问控制允许方法:DELETE、GET、HEAD、OPTIONS、PATCH、POST、PUT
  • 访问控制允许原点:*`

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

我遇到了同样的错误(并执行了同样的操作(。在我的例子中,我在Amplify post调用中跳过init参数,没有传递正确的参数。我通过传递一个带有空正文的myInit参数来解决这个问题:

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

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

答案是您的响应需要标头中的Access-Control-Allow-OriginAccess-Control-Allow-Headers

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

希望这有帮助:(

相关内容

  • 没有找到相关文章

最新更新