繁体   English   中英

在AWS API Gateway Response正文上修改的数据

[英]Data modified on AWS API Gateway Response body

我正在尝试从我的AWS Lambda函数返回十六进制字符串作为响应。 当到达客户端时,数据似乎已被修改。

  • 资料:
    47 49 46 38 39 61 01 00 01 00 80 00 00 00 00 00
    ff ff ff 21 f9 04 01 00 00 01 00 2c 00 00 00 00
    01 00 01 00 00 08 04 00 03 04 04 00 3b

  • 十六进制的摘要数据(已发送数据):

    \\ x47 \\ x49 \\ x46 \\ x38 \\ x39 \\ x61 \\ x01 \\ x00 \\ x01 \\ x00 \\ x80 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00“” \\ xff \\ xff \\ xff \\ x21 \\ xf9 \\ x04 \\ x01 \\ x00 \\ x00 \\ x01 \\ x00 \\ x2c \\ x00 \\ x00 \\ x00 \\ x00“” \\ x01 \\ x00 \\ x01 \\ x00 \\ x00 \\ x08 \\ x04 \\ x00 \\ x03 \\ x04 \\ x04 \\ x04 \\ x00 \\ x3b

  • 收到资料
    47 49 46 38 39 61 01 00 01 00 c2 80 00 00 00 00
    00 c3 bf c3 bf c3 bf 21 c3 b9 04 01 00 00 01 00
    2c 00 00 00 00 01 00 01 00 00 08 04 00 03 04 04
    00 3b

    如何解决这个问题?

上次我检查它在文档中不是很明确,但是API Gateway确实是为json(或类似名称)制作的,并且对二进制文件的支持“在路线图上”,但显然并不是优先考虑的事情。 它将发送的所有内容转换为utf-8。

将原始数据与收到的原始数据进行精确比较,可以看到:

47 49 46 38 39 61 01 00 01 00 80    00 00 00 00 00 ff    ff    ff    21 f9    04 01 00 00 01 00 2c 00 00 00 00 01 00 01 00 00 08 04 00 03 04 04 00 3b
47 49 46 38 39 61 01 00 01 00 c2 80 00 00 00 00 00 c3 bf c3 bf c3 bf 21 c3 b9 04 01 00 00 01 00 2c 00 00 00 00 01 00 01 00 00 08 04 00 03 04 04 00 3b 

0x7f下的所有内容都可以,因为Unicode代码点与编码字节相同(U + 0047-> 47),但是对于0x80或更高,则会出现问题:U + 0080-> c2 80,U + 00FF-> c3 bf等等。

最近,我们遇到了一个类似的问题:通过网关发送时,二进制数据已损坏,并且比直接访问我们的后端还要大。 这是因为很多字节被Unicode特殊的“替换字符”(又称为“ U + FFFD”)又称为“ 0xEF 0xBF 0xBD”代替。

怎么修 ? 我们只是停止使用Gateway,但是如果您能够负担得起更大的数据,则可以对它进行base64编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM