我使用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提供了响应。我查找了禁用此选项的选项,以测试这是否是问题所在。但是没找到!
所以..我的问题是:
答案 0 :(得分:0)
我可以在API网关中禁用此标头吗?如果是的话,怎么样?
很遗憾,您无法停用标头。如果您使用REGIONAL
端点类型(而不是EDGE
),则不会添加Via标头,但您也会失去EDGE
端点的优势。