【发布时间】:2019-12-16 17:17:39
【问题描述】:
我只使用 AWS Lambdas 几个星期,我正在尝试更多地了解它们,特别是如何实现我在网页上编写的 Lambda。
我有一个项目,我正在我的本地机器上工作,这只是一个网站,还有一些带有 Axios 的 JavaScript。当我在输出末尾使用无服务器将代码部署到 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.,我无法在网上找到任何解决方案。所以我想我会在这里问一下,看看你们中是否有人遇到过这样的错误?
感谢阅读!
【问题讨论】:
-
“我已经研究并调查了在线可能的解决方案,这导致我作为标题传递” ????你能指导我到这些资源吗?我希望将它们从 Internet 上强制删除,因为人们一直在尝试将
Access-Control-*标头添加到他们的请求中。负责允许跨域访问资源的标头是 response 标头。它们必须在远程资源上启用 -
withCredentials是另一个经常被误用的配置。它允许将 cookie 添加到请求中,前提是您的客户端(浏览器)已经为 3rd 方域设置了 cookie。 API 服务不倾向于使用身份验证 cookie,因此不太可能需要。
标签: javascript rest aws-lambda