我遇到一个问题,我的API网关+ Lambda集成正在通过API网关进行某种形式的内容映射。
我的API网关的端点使用Lambda代理集成。
我已启用二进制媒体类型: 图片/ jpeg 图片/ png 图片/ Webp 图片/* /
终结点会拍摄图像,并根据您使用的浏览器将其优化为jpeg或webp。
使用Firefox可以按预期返回图像/ jpeg。
在Chrome中查看(返回webp文件)会导致返回一个方框。 (这一切都适用于Elastic Beanstalk,所以我知道这是一个网关问题)
在Chrome中,我可以看到某种映射正在发生:
content-length: 4710
content-type: image/webp
status: 200
x-amz-apigw-id: UEG2ZE8vDoEFR8A=
x-amzn-remapped-content-length: 2580
x-amzn-requestid: 6217195f-20ae-11e9-9faf-ebf6a6f5765d
x-amzn-trace-id: Root=1-5c4b1e8f-cab2e4fd2564412ef5914509;Sampled=0
值:x-amzn-remapped-content-length 是应返回的长度。我不确定哪个进程在歪曲数据的返回。
答案 0 :(得分:0)
对于在此问题上遇到的其他问题,我需要在Lambda入口点中注册二进制类型,请参见下文:
public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
{
protected override void Init(IWebHostBuilder builder)
{
// Register any MIME content types you want treated as binary
RegisterResponseContentEncodingForContentType("image/jpeg", ResponseContentEncoding.Base64);
RegisterResponseContentEncodingForContentType("image/webp", ResponseContentEncoding.Base64);
RegisterResponseContentEncodingForContentType("image/png", ResponseContentEncoding.Base64);
builder
.UseStartup<Startup>();
}
}