我正在用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个“不允许的方法”响应。我真的不知道我是否走在正确的轨道上。
答案 0 :(得分:0)
您需要在API上启用CORS,因为您的请求来自S3域https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
答案 1 :(得分:0)
您需要在AWS IAM中配置用户应用。
如果您在部署后未配置用户,则由于权限问题,您的应用程序请求将失败。
答案 2 :(得分:0)
如果您不允许使用方法,则您尝试通过错误的http方法而不是配置的方法进行访问。例如,您已配置“ POST”,但尝试通过“ GET”进行访问