【问题标题】:AWS API Gateway issueAWS API 网关问题
【发布时间】:2020-03-27 05:33:20
【问题描述】:

我有一个奇怪的情况。我有一个调用 API Gateway 端点 REST API(GET 方法)的 React 应用程序。每当我(从本地主机)运行应用程序时,我都会收到“未经授权”(401)错误响应。

但是,当我在 POSTMAN 上调用相同的 API 时,我得到了 200 状态的正确响应。然后奇怪的是,当我运行该应用程序时,我也能够在浏览器上以 200 状态获得相同的正确响应!

在过去的两周内我无法解决,因此请在这方面提供任何帮助。提前致谢!

【问题讨论】:

  • 你能在浏览器开发者工具的网络标签和邮递员中检查两个请求是一样的吗?
  • @stirante。感谢您及时的回复!是的,我检查了 Safari 和 Chrome 开发工具,并且带有标头的请求与 Postman 相同。并且行为也是一致的 - 也就是说,当我在 Postman 中成功调用 API 时,我在两个浏览器中也得到了相同的正确响应!
  • 你见过this吗?我在想这可能与 Access-Control-Allow-Credentials 有关
  • 谢谢@stirante。我已经尝试了所有这些都无济于事。我尝试在 Postman 调用前后通过 cURL 调用 api。相同的行为 - 在 Postman 中调用之前,cURL 也返回 401 未授权但在 Postman 中调用之后,在 cURL 中完美运行。不知道 Postman 正在执行什么操作以使凭据在 cURL 或浏览器中正常工作。
  • 你解决了吗?有同样的问题

标签: postman aws-api-gateway


【解决方案1】:

从 localhost 调用 API GW API 将不起作用 - 因为 localhost 是本地计算机,而不是服务处于活动状态的 AWS 服务器。要调用托管在 AWS 上的 API,必须使用 IAM 凭证登录(如您提到的邮递员 aws 签名)或使用 SDK 使用 IAM 凭证进行访问。

【讨论】:

  • 谢谢。实际上,我在 Postman 和应用程序中都使用了带有 AWS Signature 4 规范哈希签名的 API。我验证了哈希算法是一致的并且目前正在运行。
  • 来自 localhost 的请求 API 看起来是否与来自 env 的请求 API 相同?
  • 是的,阿特拉斯。它们是相同的。
  • 不,阿特拉斯。由于我没有启用 VPC,因此已将其配置为公共边缘优化端点。
猜你喜欢
  • 2018-09-26
  • 2019-08-17
  • 2019-08-02
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 2016-05-18
  • 2016-03-31
相关资源
最近更新 更多