PUT 方法的 CORS 访问错误,在弹性 beantalk 上托管的 aws 上 api

CORS access error for PUT method, api on aws hosted on elastic beanstalk

我已经使用 http 自定义集成在 AWS API 网关上部署了 api

我已经启用了 CORS,如下所示:


(来源:upload.cat

对于 GET 和 PUT 方法,我收到以下错误: “来自 [my origin] 的 url 已被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' header”

代码:

 fetch(url, {
  method: 'POST', 
  mode: "cors",
  headers: {
    'Content-Type': 'application/json',
    'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token' //copied from screenshot above 
  },
  body: JSON.stringify(data)
})
.then(response => console.log('Success:', response))
.catch(error => console.error('Error:', error));
}

Access-Control-Allow-Headers 已在服务器中设置,您应将其从您的代码中删除。如果你把它放在你的请求中,它不会有任何区别。

您的 API 网关方法是否受 Lambda 授权方保护或配置为使用 API 密钥?如果是这样,请求可能会被其中之一拒绝并且响应将不包含 Access-Control-Allow-Origin header 因此浏览器的预检检查将失败。

您还需要检查 API 方法集成返回的响应。对于 Proxy Lambda,响应应包括 Access-Control-Allow-Origin header.

看看integration response documentation