Aws lambda搞砸了我的编码

时间:2015-10-19 01:30:45

标签: node.js amazon-web-services aws-lambda

我正在使用

https://clifff.com/2015/10/01/2015-failed-experiments-with-aws-lambda/ + https://www.twilio.com/blog/2015/09/build-your-own-ivr-with-aws-lambda-amazon-api-gateway-and-twilio.html

在aws lambda上创建一个图像大小调整服务...我解决了第一篇文章被困的内容类型问题,但编码似乎是一个死胡同...任何帮助将不胜感激!

红宝石

Base64.decode64("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")

- >工作形象

GIF89a\u0001\u0000\u0001\u0000\x80\u0000\u0000\u0000\u0000\u0000\xFF\xFF\xFF!\xF9\u0004\u0001\u0000\u0000\u0000\u0000,\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0002\u0001D\u0000;

api gateway with

$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")

- >破碎的图像

GIF89a\u0001\u0000\u0001\u0000�\u0000\u0000\u0000\u0000\u0000���!�\u0004\u0001\u0000\u0000\u0000\u0000,\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0002\u0001D\u0000;

2 个答案:

答案 0 :(得分:2)

好的,这是超老的线程,但由于问题仍然没有得到解决,并且对API GW的二进制支持记录很糟糕,我认为有人可能会找到我发现有用的解决方法:

我相信,二进制数据在API GW内的某处传递为UTF-8字符串。如果您只需要返回跟踪像素(而不是例如生成的图像)​​,则可以通过使用其二进制数据中没有问题字节的图像来避免混乱编码的问题。

例如,最短的跟踪像素(26字节长的GIF)在中间有一个十六进制表示为0xFF的字节。这将打破API GW。但是如果你用十六进制编辑器编辑这个图片并用0x00替换这个字节,那么你将获得一些仍然是有效图像的东西(即使是微软的浏览器也不会抱怨它),但是仍然可以通过API GW。

只需制作你的" Body Mapping"模板看起来像这样:

$util.base64Decode("R0lGODlhAQABAAAAACwAAAAAAQABAAACADs=")

答案 1 :(得分:1)

是啊......看起来像是一个知道问题https://forums.aws.amazon.com/thread.jspa?messageID=668306&#668306