【发布时间】:2019-12-20 04:36:49
【问题描述】:
我正在使用create-react-app 编写一个(单页)react 应用程序,它调用我的 API,即 AWS api 网关和 AWS lambda。我正在尝试使用 AWS s3 静态托管来托管 react 应用程序。
在本地开发时,由于缺少 CORS 标头,对我的 API 的请求(使用 axios)被阻止。为了解决这个问题,我在 package.json 文件中向我的 AWS api 网关域添加了一个代理:
"proxy": "https://***.execute-api.us-east-2.amazonaws.com/"
所以请求在我的本地主机上工作,应用程序托管在节点开发服务器上。但是当应用程序托管在 AWS S3 上时,我无法让它工作。对我的 API 的 axios 请求总是失败并出现 403 Access denied 错误。
我的问题是,为什么请求会失败,我该怎么做才能解决这个问题?
编辑:我能够让我的 API 方法之一工作,方法是 1)在 API 网关中为有问题的方法启用 CORS 并让我的 API 返回标头:
{
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': '*'
}
使用方法响应。
现在,即使进行了上述更改,我的一种 POST 方法也根本不起作用,我收到 405“方法不允许”响应。我真的不知道我是否走在正确的轨道上。
【问题讨论】:
-
请发布您的 cors 配置。因为你可能遗漏了什么
-
你能发布确切的错误吗
-
还有您为 API 端点使用的授权类型
-
@ArunK 查看编辑。没有授权,我的 cors 配置允许所有来源(*)和所有方法。我认为问题出在 aws API 网关上。
标签: reactjs amazon-s3 axios aws-api-gateway