簡體   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