【问题标题】:Using AWS Lambda REST URL from Local Host [duplicate]使用来自本地主机的 AWS Lambda REST URL [重复]
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢 Avner,这帮助我让它正常工作!希望你有一个美好的一天。
  • 不客气,很高兴为您提供帮助!
  • Avner,虽然这适用于 GET 方法,但我正在研究 POST 方法失败。在浏览了 chrome 中的开发人员选项卡后,我发现在 GET 中请求的内容类型是application/json,而在帖子中是application/json:charset=utf-8。我无法删除内容类型上的这个标志,出于某种原因,我觉得这就是导致 Access-Control-Allow-Origin:* 标头失败的原因。你认为这是原因吗?
  • 听起来您缺少 Access-Control-Allow-Methods 标头需要允许 OPTIONS、GET、POST
  • 嘿 Avner,感谢您的回复。我试过了,但没有用,您可以在此链接中查看有关该问题的更多详细信息:stackoverflow.com/q/57454105/9736802
猜你喜欢
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2015-10-16
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多