Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Aplikacja kliencka jako odpowiedź dla interfejsu API otrzymuje kod stanu HTTP 431 Request Header Fields Too
Large z kodem błędu protocol.http.TooBigHeaders
połączeń.
Komunikat o błędzie
Aplikacja kliencka otrzymuje ten kod odpowiedzi:
HTTP/1.1 431 Request Header Fields Too Large
Możesz też zobaczyć następujący komunikat o błędzie:
{
"fault":{
"faultstring":"request headers size exceeding 25,600",
"detail":{
"errorcode":"protocol.http.TooBigHeaders"
}
}
}Możliwe przyczyny
Ten błąd występuje, jeśli łączny rozmiar wszystkich nagłówków żądań wysłanych przez aplikację kliencką do Apigee Edge jako część żądania HTTP jest większa niż dozwolony limit w Apigee Edge zgodnie z RFC 6585, sekcja 5: 431 Request Header Fields Too Large (Zbyt duże pola nagłówka żądania).
Oto możliwe przyczyny tego błędu:
| Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczące |
|---|---|---|
| Rozmiar nagłówków żądań przekracza dozwolony limit | Łączny rozmiar wszystkich nagłówków wysłanych przez aplikację kliencką w ramach żądania HTTP do Apigee Edge przekracza dozwolony limit w Apigee Edge. | Użytkownicy chmury publicznej i prywatnej Edge |
Typowe kroki diagnostyki
Użyj jednego z tych narzędzi lub metod, aby zdiagnozować ten błąd:
Monitorowanie interfejsów API
Aby zdiagnozować błąd za pomocą monitorowania interfejsów API:
- Zaloguj się w interfejsie Apigee Edge jako użytkownik z uprawnieniami odpowiednią rolę.
Przełącz się na organizację, w której chcesz zbadać problem.
- Przejdź do przycisku Analiza > Monitorowanie interfejsów API > Zbadaj stronę.
- Wybierz okres, w którym zaobserwowano błędy.
- Porównaj Kod błędu z czasem.
- Wybierz komórkę, która zawiera kod błędu
protocol.http.TooBigHeadersi kodu stanu431, jak pokazano poniżej:
Zobaczysz informacje o kodzie błędu
protocol.http.TooBigHeadersjak poniżej:
Kliknij Wyświetl logi i rozwiń wiersz nieudanego żądania:
W oknie Logi zwróć uwagę na te informacje:
- Kod stanu:
431 - Źródło błędu:
apigee - Kod błędu:
protocol.http.TooBigHeaders. - Długość żądania(bajty):
32150 (> 25 KB)
- Kod stanu:
- Jeśli Źródło błędu ma wartość
apigeelubMP, Kod błędu ma wartośćprotocol.http.TooBigHeadersi Długość żądania przekracza 25 KB, co oznacza, że łączny rozmiar wszystkie nagłówki żądań wysyłane przez aplikację kliencką w ramach żądania HTTP większe niż dozwolony limit w Apigee.
Narzędzie śledzenia
NGINX
Aby zdiagnozować błąd przy użyciu logów dostępu NGINX:
- Jeśli jesteś użytkownikiem Private Cloud, możesz używać logów dostępu NGINX do:
określenie najważniejszych informacji o błędach HTTP
431. Sprawdź logi dostępu NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logGdzie: wartości ORG, ENV i PORT# są zastępowane rzeczywistymi wartościami.
- Wyszukaj błędy (
431) w danym okresie (jeśli problem wystąpił w przeszłości) lub jeśli masz jakieś żądania, które nadal kończą się niepowodzeniem431 Jeśli znajdziesz błędy
431z kodem błędu X-Apigee-fault-code pasujące do wartościprotocol.http.TooBigHeaders, a następnie określ wartość X-Apigee-fault-source..
Powyższy przykładowy wpis z logu dostępu NGINX zawiera następujące wartości dla: X-Apigee-fault-code i X-Apigee-fault-code
Nagłówki odpowiedzi Wartość X-Apigee-fault-code protocol.http.TooBigHeadersX-Apigee-fault-source MPZwróć uwagę na długość żądania:
40159(40 KB to więcej niż 25 KB, dozwolony limit nagłówków żądań w Apigee Edge)W powyższym przykładowym wpisie logu parametr X-Apigee-fault-source zawiera wartość
apigeelubMP, X-Apigee-fault-code ma wartośćprotocol.http.TooBigHeadersi długość żądania to 40 KB, co stanowi jest większy niż dozwolony limit w Apigee – 25 KB. Wyraźnie wskazuje to, że łączny rozmiar wszystkich nagłówków żądań wysłanych przez aplikację kliencką w ramach protokołu HTTP żądanie przekroczyło dozwolony limit 25 KB w Apigee Edge.
Przyczyna: rozmiar nagłówków żądania przekracza dozwolony limit
Diagnostyka
- Określ kod błędu, źródło błędu i rozmiar żądania dla błędu zaobserwowany błąd przy użyciu logów monitorowania API lub logów dostępu NGINX, jak wyjaśniono w Najczęstsze czynności diagnostyczne.
- Jeśli Źródło błędu ma wartość
apigeelubMP, Kod błędu ma wartośćprotocol.http.TooBigHeaders, i Długość żądania przekracza 25 KB, to wskazuje, że rozmiar żądania wysłanego przez aplikację kliencką do Apigee jest większy niż dozwolony limit w Apigee Edge. - Możesz sprawdzić, czy rozmiar nagłówków żądania przekroczył dozwolony limit 25 KB, używając jednej z
następujące metody:
Komunikat o błędzie
Aby przeprowadzić weryfikację przy użyciu komunikatu o błędzie:
Jeśli masz dostęp do pełnego komunikatu o błędzie otrzymanego z Apigee Edge, przeczytaj
faultstring. Znakfaultstringoznacza, że łączny rozmiar nagłówków żądań przekroczył dozwolony limit 25 KB.Przykładowy komunikat o błędzie:
"faultstring":"request headers size exceeding 25,600"
Rzeczywiste żądanie
Aby przeprowadzić weryfikację na podstawie rzeczywistego żądania:
Jeśli masz dostęp do rzeczywistego żądania wysłanego przez aplikację kliencką, Następnie wykonaj te czynności:
- Sprawdź rozmiar nagłówków przekazywanych w żądaniu.
Jeśli okaże się, że łączny rozmiar nagłówków jest większy niż dozwolony limit w Apigee Edge, to jest przyczyna problemu.
Przykładowe żądanie:
curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
W tym przypadku łączny rozmiar nagłówków
header0,header1,header2aheader3ma więcej niż 25 KB, co oznacza, że zawiera ponad 25 tys. znaków ASCII (bajtów).Jeśli używasz innego klienta, możesz przejrzeć jego dzienniki i spróbuj sprawdzić rozmiar wiersza żądania wysyłanego do Apigee Edge.
Logi procesora wiadomości
Aby przeprowadzić weryfikację za pomocą logów procesora wiadomości:
Jeśli jesteś użytkownikiem chmury prywatnej, możesz używać logów procesora wiadomości do: sprawdzić, czy rozmiar nagłówków żądań nie przekroczył dozwolony limit w Apigee Edge.
Sprawdź dzienniki procesora wiadomości:
/opt/apigee/var/log/edge-message-processor/logs/system.log- Wyszukaj błędy
431w konkretnym okresie czasu trwania (jeśli problem wystąpił w przeszłości) lub czy są jakieś żądania, nadal występują błędy z użyciem funkcji431. Możesz użyć następujących ciągów wyszukiwania.grep -ri "exceeding"
grep -ri "RequestHeadersTooLarge"
- Znajdziesz tam wiersze z domeny
system.logpodobne do tych:2021-07-27 08:30:28,419 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:GET, uri:/test/, message Id:null, exception:com.apigee.errors.http.user.RequestHeadersTooLarge{ code = protocol.http.TooBigHeaders, message = request headers size exceeding 25,600, associated contexts = []}, context:Context@9c5903 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130 useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms lastIO=0ms isOpen=true)
Tekst
message = request headers size exceeding 25,600w powyżej komunikatu o błędzie wskazuje, że łączny rozmiar nagłówków żądań jest większy niż 25 KB. Dlatego Apigee Edge zgłasza wyjątekcom.apigee.errors.http.user.RequestHeadersTooLargei zwroty Kod stanu431z kodem błęduprotocol.http.TooBigHeadersdla aplikacji klienckich.
Rozdzielczość
Popraw rozmiar
Opcja nr 1 [zalecana]: popraw aplikację kliencką, aby nie wysyłała nagłówków żądań z łączny rozmiar jest większy niż dozwolony limit
- Przeanalizuj przyczynę, dla której dany klient wysłał nagłówek żądania z dużym rozmiar, który powoduje, że łączny rozmiar nagłówka jest większy niż dozwolony limit określony w Limity.
Jeśli nie jest to pożądane, zmodyfikuj aplikację kliencką tak, aby wysyłała Nagłówki żądań o rozmiarze mniejszym niż dozwolony limit.
W przykładzie powyżej możesz rozwiązać problem, przekazując długi nagłówek wartości w treści lub ładunku żądania:
curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'- Jeśli jest to pożądane i chcesz wysłać nagłówek z większym limitem, przejdź do następną opcję.
CwC
Opcja 2. Zwiększ limit linii żądania za pomocą usługi CCC
Apigee zapewnia Właściwość CwC, która pozwala zwiększyć limit rozmiaru wiersza żądania. Więcej informacji: Ustaw limit wierszy żądania na procesorze wiadomości
Limity
Apigee oczekuje, że aplikacja kliencka i serwer backendu nie będą wysyłać Nagłówki żądań/odpowiedzi, których rozmiary są większe niż dozwolony limit zgodnie z dokumentacją dla limitu rozmiaru nagłówka żądania/odpowiedzi w Limity Apigee Edge.
- Jeśli jesteś użytkownikiem Public Cloud, maksymalny limit dla Rozmiar nagłówków żądania i odpowiedzi jest zgodny z rozmiarem rozmiaru nagłówka żądania/odpowiedzi w artykule Limity Apigee.
- Jeśli jesteś użytkownikiem Private Cloud , możliwe, że domyślne maksimum zostało zmienione limit rozmiaru nagłówków żądań i odpowiedzi (mimo że nie jest to zalecane działanie). Maksymalny rozmiar nagłówka żądania możesz określić, wykonując instrukcje w tym artykule: Jak sprawdzić aktualny limit
Jak sprawdzić obecny limit?
Z tej sekcji dowiesz się, jak sprawdzić, czy usługa HTTPRequest.headers.limit
została zaktualizowana o nową wartość w procesorach wiadomości.
- Na komputerze z procesorem wiadomości wyszukaj właściwość
HTTPRequest.headers.limitw:/opt/apigee/edge-message-processor/confi sprawdź w Zobacz, jaka wartość została ustawiona, jak pokazano poniżej:grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
- Przykładowy wynik powyższego polecenia jest taki:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
W przykładowych danych wyjściowych powyżej zwróć uwagę, że właściwość
HTTPRequest.headers.limitzostała ustawiona na wartość25kwhttp.properties.Wskazuje on, że limit rozmiaru nagłówka żądania skonfigurowany w Apigee dla prywatnego Google Cloud ma 25 KB.
Specyfikacja
Apigee Edge oczekuje, że aplikacja kliencka nie będzie wysyłać nagłówków o dużym rozmiarze w ramach
użytkownika. Jeśli żądanie zawiera nagłówki, których łączny rozmiar przekracza określony limit,
Apigee wysyła żądanie 431 Request Header Fields Too Large zgodnie z tym standardem RFC
specyfikacje:
| Specyfikacja |
|---|
| RFC 6585, sekcja 5: 431 Pole nagłówka żądania za duże |
Jeśli nadal potrzebujesz pomocy zespołu pomocy Apigee, wejdź na Konieczne jest zbieranie informacji diagnostycznych.
Musi zbierać informacje diagnostyczne
Zbierz te informacje diagnostyczne, a następnie skontaktuj się z zespołem pomocy Apigee Edge:
Jeśli jesteś użytkownikiem Public Cloud, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa serwera proxy interfejsu API
- Wykonaj polecenie
curlużyte do odtworzenia błędu431 - Plik śledzenia żądań do interfejsu API
Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany dla nieudanych żądań
- Nazwa organizacji
- Nazwa środowiska
- Pakiet serwera proxy interfejsu API
- Plik śledzenia nieudanych żądań do interfejsu API
- Wykonaj polecenie
curlużyte do odtworzenia błędu431 Logi dostępu NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logGdzie: ORG, ENV i PORT# są zastępowane przez wartości rzeczywiste.
- Dzienniki systemowe procesora wiadomości
/opt/apigee/var/log/edge-message-processor/logs/system.log