代码之家  ›  专栏  ›  技术社区  ›  stayingcool

amplify 403也提出了一个CORS错误

  •  1
  • stayingcool  · 技术社区  · 7 年前

    在AWS部署后的第二天,它运行良好。今天早上它

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

    ' https://xxnxxtfxx.execute-api.eu-west-1.amazonaws.com/Prod/items 从原点 '' http://myproject-20181130113531--hostingbucket.s3-website-eu-west-1.amazonaws.com '' 请求的资源上存在标头。

    观察/行动

    • 确保在API网关上启用CORS,重新部署API。

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

    • 在开发者工具下,选项调用看起来也不错:

      常规设置:

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

      响应标题:

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

    想知道为什么403会出现一个CORS错误。

    0 回复  |  直到 7 年前
        1
  •  1
  •   r.pedrosa    7 年前

    我犯了同样的错误(并采取了同样的行动)。在我的例子中,我没有在 Amplify post call 通过跳过init参数。我通过传递一个带有空体的myInit参数来解决这个问题:

    let myInit = {
        body: {}
    }
    
    API.post(apiName, path, myInit)
    
        2
  •  0
  •   Dale Jacques    5 年前

    https://serverless-stack.com/chapters/handle-api-gateway-cors-errors.html

    答案是你的回答需要 Access-Control-Allow-Origin Access-Control-Allow-Headers 在标题中。

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