2016-09-12 15 views
10

Opracowaliśmy aplikację, która oferuje serveral rest services i obsługuje nagłówek Accept-Encoding, aby zwrócić skompresowaną zawartość przez wartość nagłówkową Content-Encoding:gzip.Jak zwrócić spakowaną zawartość za pomocą AWS API Gateway

Ta aplikacja jest wdrażana w instancjach ec2 na aws i kiedy wysyłamy żądanie z ustawieniem wartości Accept-Encoding, odpowiedź jest poprawnie zbudowana.

Chcemy odsłonić ten api za pomocą bramki api, ale działa tylko w przypadku braku kompresji żądań. Kiedy wysyłamy żądanie z prośbą o gzip content, nagłówek Content-Encoding jest ustawiony prawidłowo, ale zawartość odpowiedzi jest uszkodzona.

Czy musimy ustawić jakiś specjalny parametr lub konfigurację w odpowiedziach na odpowiedź lub w odpowiedziach na metody?

Pozdrawiam.

Odpowiedz

1

Rejestracja: gru 19, 2017 AWS API Gateway kodujący wsparcie.

Po utworzeniu interfejsu API przejdź do Ustawień i wybierz Włącz kodowanie zawartości.

See example

here jest także oficjalne wydanie po AWS.

9

Niestety, bramka API obecnie nie obsługuje kompresji HTTP. Jest jednak brany pod uwagę przy przyszłym rozwoju.

Póki co, powinieneś zwrócić nieskompresowaną treść z punktu końcowego (tj. Pominąć nagłówek Accept-Encoding), aby wykonać proxy za pośrednictwem bramki API.

Jeśli działa w przypadku użycia, można alternatywnie zakodować base64 skompresowaną zawartość, proxy za pośrednictwem bramy API i dekodować go na kliencie.

Dzięki, Ryan

4

Tylko obejście, ale if you set Accept-Encoding: identity you should receive the result correctly (w przeciwieństwie do połączonej dyskusji znalazłem to działa na POST i dostać).

+2

Po wyciągnięciu włosów na kilka godzin mogę potwierdzić tę niezrozumiałą informację. W tym wydaniu z GZipping i mucking się z CORS do pracy, to był koszmar się skonfigurowany. Jestem pewien, że tysiące nie miały mojej wytrwałości i po prostu się poddały. Połącz swoje działania z Amazon. – Lobos

+0

@Lobos To samo tutaj, od 2 dni zmagam się z konfiguracją. To był koszmar. –

+0

Aktualizacja: Poddałem się. –

0

Aby umożliwić GZipped zawartość z punktu końcowego proxy HTTP, możesz dodać */* w "Binarnych typach mediów" w sekcji "Obsługa binarna" twojego API.

+0

Cytaty z innego źródła muszą być prawidłowo przypisane i sformatowane jako * tekst *, a nie zrzuty ekranu. –

1

Zrobiłem to działa dodając Accept-Encoding do AWS API Brama Integration Request

Krok 1: konsoli Przejść do AWS API Gateway kliknij Integration Request enter image description here

Krok 2: Dodaj Accept-Encoding do sekcji HTTP Headers, wartość 'identity' (potrzebujesz pojedynczego cudzysłowu) enter image description here

Krok 3: Kliknij Actions ->Deploy API

Jeśli używasz AWS CloudFormation można dodać yaml Integration: RequestParameters: integration.request.header.Accept-Encoding: "'identity'

Powiązane problemy