AWS API网关 - 弹性Bean Talk的HTTP代理不会直接回复

时间:2017-10-19 19:54:27

标签: java api amazon-web-services elastic-beanstalk aws-api-gateway

我使用API​​网关在Elastic BeansTalk中解耦我的Tomcat后端,但是我无法从API获得响应。

当我尝试使用API​​网关控制台进行测试时,集成请求正常。它在后端工作正常。我使用API​​端点发出请求并检查服务器日志,它给出了预期的200响应。

但是当API网关支持代理的响应时,无法在任何客户端中解析它。我尝试使用Web浏览器,API测试工具和移动客户端(iOS)。在每种情况下,代理都告诉他"无法解码原始数据"!我使用curl检查了端点,它工作正常。比较来自API Gateway和Elastic BeansTalk端点的响应,唯一的区别是在API网关响应中,通知的内容大小要长一个字节。

做一些研究,网络上的一些人发现同样的问题,有不同的后端服务和不同的代理。例如,here某人讲述了Safari尝试访问Flickr时出现的同一问题。在这个问题的回答中,有人告诉该问题与服务器插入的Http Via标题有关。

我检查了API Gateway的响应头,实际上它有一个Via Header,通知Cloudfront提供了响应。我查找了禁用此选项的选项,以测试这是否是问题所在。但是没找到!

所以..我的问题是:

  1. 有人遇到过相同的问题吗?
  2. 有人可以告诉我这个问题是否与Via Http Header有关?
  3. 我可以在API网关中禁用此标头吗?在是的情况下,如何?

1 个答案:

答案 0 :(得分:0)

  

我可以在API网关中禁用此标头吗?如果是的话,怎么样?

很遗憾,您无法停用标头。如果您使用REGIONAL端点类型(而不是EDGE),则不会添加Via标头,但您也会失去EDGE端点的优势。