我有一个 AWS API Gateway 作为后端服务的代理:
{
"apiKeySource": "HEADER",
"name": "-",
"createdDate": 1513820260,
"binaryMediaTypes": [
"application/zip",
"application/octet-stream"
],
"endpointConfiguration": {
"types": [
"EDGE"
]
},
"id": "-"
}
集成定义在这里:
{
"integrationResponses": {
"200": {
"responseTemplates": {
"application/json": null
},
"statusCode": "200"
}
},
"passthroughBehavior": "WHEN_NO_MATCH",
"timeoutInMillis": 29000,
"uri": "http://${stageVariables.backend}:7000/{proxy}",
"connectionType": "INTERNET",
"httpMethod": "ANY",
"cacheNamespace": "iv06s3",
"type": "HTTP_PROXY",
"requestParameters": {
"integration.request.path.proxy": "method.request.path.proxy",
"integration.request.header.X-Source-IP": "context.identity.sourceIp"
},
"cacheKeyParameters": [
"method.request.path.proxy"
]
}
我有一个端点可以动态生成一个 Zip 文件并将其返回给请求者。
当我直接访问端点时,文件没问题。当我通过 API 网关访问它时,它被损坏了。
损坏的形式是原始文件中的字节被转换为
0xEFBFBD
.这是UTF-8 'replacement character' .我的请求有
Accept
设置为 application/zip
并且回复是 Content-Type: application/zip
.我的期望是 API Gateway 应该将其识别为二进制媒体类型,而不管文件,但它似乎很清楚它正在将其作为文本内容进行处理。
我究竟做错了什么?
最佳答案
将“二进制媒体类型”设置为“multipart/form-data”为我解决了类似的问题。
看这里:AWS Api Gateway as a HTTP Proxy is currupting binary uploaded image files
关于amazon-web-services - 为什么 API 网关会损坏我的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044438/