图像在API网关Web代理上损坏



我尝试创建一个AWS API网关代理,该代理将将任何HTTP动词作为'get'传递到目标服务器(因为它是为了特定目的)。

文本和json文件是没有问题的,但所有图像都被打破了。

似乎API网关代理在某种程度上以某种方式拦截并损坏了二进制/图像数据。

是否有一些特定的配置可以让我通过图像?

此页面将有所帮助:使用API网关控制台启用二进制支持:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-pay-payload-concodings-configure-with-console.html

您必须添加想要将其视为二进制的MIME类型添加到API设置下的二进制媒体类型列表中。

您还必须确保您的响应content-type以及您的请求accept标头不会发生冲突。

如果未定义contenthingling,并且如果响应的内容类型标题和原始请求的接受标头与二进制中型型列表的条目相匹配,则API网关通过身体。当内容型标头和接受标头相同时,就会发生这种情况;否则,API网关将响应主体转换为接受标头中指定的类型。

摘自API网关文档

从lambda下载 binary blob 以下载图像文件(image.jpg):

GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/octet-stream

从lambda:

下载base64编码字符串的图像文件(image.jpg)作为base64编码的字符串作为json属性

GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

还查看此AWS博客文章

最新更新