我仅使用AWS Lambda已有几周了,我正在尝试了解有关它们的更多信息,特别是如何实现我在网页上编写的Lambda。
我有一个项目,我正在本地计算机上工作,这只是一个网站,还有一些使用Axios的JavaScript。当我在输出末尾使用Serverless将代码部署到AWS Lambda时,我得到一个URL,将其命名为THE_URL
。当我将此页面复制并粘贴到浏览器中时,将带到一个网页,上面有我期望的响应。
但是在我的网站上,当我按下按钮时会调用此脚本,
axios
.get("THE_URL")
.then(data => console.log(data))
.catch(err => console.log(err));
这给了我一个错误Access to XMLHttpRequest at 'THE_URL' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
,这个错误我已经查过,这似乎很常见。我研究并研究了在线存在的可能解决方案,这些解决方案使我以标头形式传递并标记请求,使其看起来像这样,
axios
.get("THE_URL",
{headers: {
"Access-Control-Allow-Origin": "*"
},
withCredentials: true
}
)
但是,这样,我得到一个错误,看起来像这样Access to XMLHttpRequest at 'THE_URL' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
,但我还没有找到在线的任何解决方案。所以我想在这里问一下,看看你们中是否有人遇到过这样的错误?
感谢阅读!
答案 0 :(得分:2)
CORS标头应位于您的服务器中,而不是客户端中。服务器控制哪些客户端域可以访问它。通过添加“ *”,您允许任何站点从您的服务器请求资源,包括本地主机(假设您的lambda是可公开访问的)
更新lambda以返回Access-Control-Allow-Origin: *
标头。
https://serverless.com/framework/docs/providers/aws/events/apigateway/#enabling-cors