【问题标题】:AWS API Gateway - Test works, deployed API errors. Why?AWS API Gateway - 测试有效,部署 API 错误。为什么?
【发布时间】:2017-02-21 05:23:36
【问题描述】:

我正在尝试将 AWS Api Gateway 设置为我实际部署的 API 的反向代理。 我的理解是,我通过创建“代理”资源然后指定我的 http 端点 URL 来做到这一点 - 如此处所述 Create and Test an API with HTTP Proxy Integration through a Proxy Resource

当我尝试通过资源编辑器中的“测试”功能使用 API 时,这可以正常工作。我可以使用 GET 方法调用任何公开的资源并查看成功的响应。

但是,当我部署 API Gateway API 时,我无法再使用它给我的“调用 URL”访问任何内容 - 我只是得到:

  {
    "Message": "No HTTP resource was found that matches the request URI 'http://<myuniqueid>.execute-api.eu-west-1.amazonaws.com/api/Sector/100'.",
    "MessageDetail": "No type was found that matches the controller named 'Sector'."
  }

如果我从“集成请求”中删除“使用 HTTP 代理集成”复选框,我可以让它工作,但为什么它不能作为代理工作?

【问题讨论】:

  • 你能提供更多细节吗? (就像这两种情况下的原始请求/响应一样)在使用代理资源类型时,您的端点返回无效响应似乎是一个问题,因为您提供的错误消息不是 API 网关的。使用代理资源时可能会发送额外的标头。

标签: aws-api-gateway


【解决方案1】:

我怀疑这是由 HTTP 代理集成的一个已知问题引起的。当您使用 HTTP 代理集成时,API Gateway 会将所有标头传递到集成端点,包括 HOST 标头。许多现有的 http 端点需要使用与其 DNS 名称匹配的 HOST 标头,在这种情况下,通过 API 网关的 HOST 标头可能会混淆端点。

更新:我们确定了解决此问题的方法。

在您的集成请求中,显式添加一个名为“Host”的标头,并为其指定集成端点 DNS 名称的值。这将从传入客户端请求转发的 Host 标头替换为您指定的 Host 标头。这应该可以让您的后端端点正常运行。

【讨论】:

  • 谢谢@MikeD。这正是我们遇到的问题。
猜你喜欢
  • 2019-12-19
  • 2021-03-30
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多