【发布时间】:2017-03-14 11:33:07
【问题描述】:
问题:
AWS API Gateway 代理在使用 Postman 时没有从我的后端服务传回响应,但在 curl 上工作
说明:
我有一个想通过 AWS API 网关公开的后端服务。在这种情况下使用网关纯粹是作为 HTTP 代理。所以,
- 创建了新的 API
- 使用 ANY 将资源设置为“代理”
- 给我的后端服务地址
- 已部署(无需身份验证,但需要 API 密钥)
- 可以从部署阶段 url 成功调用我的后端服务
- 使用 CA 证书创建自定义域
- 在我的 DNS 提供商上创建了别名
- 1 小时后,域启动并指向云端工作
问题
我调用了自定义域,
- API 网关收到了
- 通话记录在 cloudwatch 日志中,并且
- 它正在访问我的后端。
- 后端回复 API 网关。
但是,在我的邮递员身上,我看到 “无法得到任何回应”
但是,如果我通过 curl 尝试此操作,我将收到后端发送的预期响应。所以,不清楚的部分是 -
Postman 调用或基于普通浏览器 url 栏的 GET 到我的端点有什么问题?
为什么 curl 成功了?
并且,对于我的 API 网关端点,我已将 API 密钥设置为强制。我创建了一个 API 密钥并将其分配给 API。有趣的是,即使我没有传递 API 密钥,curl 调用仍然成功。为什么 API Gateway 会允许这样的调用?
另一个令我困惑的问题是,我必须在我用于 API 版本控制的
Accept和Content-Type中传递自定义值。
例如:Accept: application/json-v1 失败,但 Accept: application/xml-v1 工作正常。
我认为这与价值有关,因为 API Gateway 不喜欢它。
我已经彻底阅读了文档,但仍然无法为所有这些问题找到任何合理的解释。我错过了什么导致这些奇怪的问题包?到目前为止,我的 google fu 也不足以解决这个问题。
请帮助或同样指出 AWS 网关中可以帮助解决此问题的特定文档或我可能错过的关于这些主题的任何讨论线程。
至少得到其中一个的答案会让我对我的方法有一个清晰的认识。
谢谢大家!
【问题讨论】:
标签: api amazon-web-services curl proxy aws-api-gateway