Двоичное повреждение шлюза API AWS - PullRequest
0 голосов
/ 25 января 2019

У меня есть проблема, из-за которой мой шлюз API + лямбда-интеграция подвергается какой-либо форме сопоставления содержимого шлюзом API.

У меня есть шлюз API с конечной точкой, использующей интеграцию Lambda Proxy.

Я включил бинарные типы носителей: image / jpeg image / png image / webp image / * /

Конечная точка берет изображения, оптимизирует их в формате 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 Длина, которая должна быть возвращена.Я не уверен, какие процессы искажают возврат данных.

Настройка интеграции прокси Proxy Integration Setup

Конфигурация шлюза API API Gateway Configuration

1 Ответ

0 голосов
/ 30 января 2019

Для всех, кто застрял в этой проблеме, мне нужно было зарегистрировать двоичные типы в моей точке входа 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>();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...