从本地主机使用AWS Lambda REST URL

时间:2019-08-08 23:59:28

标签: javascript rest aws-lambda

我仅使用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.,但我还没有找到在线的任何解决方案。所以我想在这里问一下,看看你们中是否有人遇到过这样的错误?

感谢阅读!

1 个答案:

答案 0 :(得分:2)

CORS标头应位于您的服务器中,而不是客户端中。服务器控制哪些客户端域可以访问它。通过添加“ *”,您允许任何站点从您的服务器请求资源,包括本地主机(假设您的lambda是可公开访问的)

更新lambda以返回Access-Control-Allow-Origin: *标头。

https://serverless.com/framework/docs/providers/aws/events/apigateway/#enabling-cors