Konfigurowanie nagłówka zezwalania na dostęp do usługi 405 w procesorach wiadomości

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

W komunikacji klient-serwer serwer odpowiada kodem stanu HTTP 405 Method Not Allowed jeśli metoda żądania HTTP przedstawiona przez klienta jest znana serwerowi ale nie jest obsługiwana przez zasób docelowy. Podobnie w Apigee Edge serwer backendu może odpowiedzieć kodem stanu HTTP 405 Method Not Allowed.

Apigee Edge oczekuje, że serwer backendu będzie wysyłać odpowiedzi 405 Method Not Allowed z listą dozwolonych metod w nagłówku Allow, zgodnie ze specyfikacją RFC 7231, sekcja 6.5.5: 405 Method Not Allowed.

Nagłówek Allow musi być wysyłany w tym formacie:

Allow: HTTP_METHODS

Jeśli na przykład serwer backendu zezwala na metody GET, POST i HEAD, musisz się upewnić, że nagłówek Allow zawiera je w ten sposób:

Allow: GET, POST, HEAD

Jeśli serwer backendu nie wyśle nagłówka Allow z kodem stanu HTTP 405 Method Not Allowed, Apigee zwróci kod stanu HTTP 502 Bad Gateway z kodem błędu protocol.http.Response405WithoutAllowHeader do aplikacji klienckiej. Zalecanym rozwiązaniem tego błędu jest naprawienie serwera backendu, aby był zgodny ze specyfikacją RFC 7231, sekcja 6.5.5: 405 Method Not Allowed lub użycie obsługi błędów, aby odpowiedzieć kodem stanu HTTP 405 Method Not Allowed wraz z nagłówkiem Allow, jak opisano w scenariuszu rozwiązywania problemów 502 Bad Gateway – odpowiedź 405 bez nagłówka Allow.

W wyjątkowych przypadkach może się jednak okazać, że nie można od razu naprawić backendu ani zmodyfikować serwera proxy interfejsu API, aby rozwiązać ten problem.

W takich przypadkach możesz tymczasowo ustawić ignorowanie nagłówka Allow dla właściwości 405 HTTP.ignore.allow_header.for.405 na poziomie procesora komunikatów. Ustawienie tej właściwości na true uniemożliwia Apigee zwracanie odpowiedzi 502 Bad Gateway do aplikacji klienckich, nawet jeśli serwer backendu wyśle kod stanu HTTP 405 Method Not Allowed bez nagłówka Allow.

Gdy będziesz mieć możliwość naprawienia serwera backendu, aby wysyłał kod stanu HTTP 405 Method Not Allowed z nagłówkiem Allow, możesz przywrócić domyślną wartość false właściwości HTTP.ignore.allow_header.for.405.

Zanim zaczniesz

Zanim wykonasz czynności opisane w tym dokumencie, upewnij się, że rozumiesz te tematy:

Konfigurowanie ignorowania nagłówka Allow dla właściwości 405 na procesorach wiadomości

W Apigee Edge właściwość HTTP.ignore.allow_header.for.405 jest domyślnie ustawiona na false. Dzięki temu Apigee Edge może zwracać kod stanu 502 Bad Gateway z kodem błędu protocol.http.Response405WithoutAllowHeader do aplikacji klienckich, jeśli serwer backendu wyśle kod stanu HTTP 405 Method Not Allowed bez nagłówka Allow. Jeśli chcesz uniemożliwić Apigee Edge wysyłanie 502 Bad Gateway do aplikacji klienckich, musisz ustawić wartość właściwości HTTP.ignore.allow_header.for.405 na true na procesorach wiadomości.

W tej sekcji opisujemy, jak skonfigurować właściwość HTTP.ignore.allow_header.for.405 na true na procesorach wiadomości za pomocą tokena zgodnie ze składnią opisaną w artykule Konfigurowanie Edge.

  1. Na maszynie procesora komunikatów otwórz w edytorze ten plik. Jeśli plik nie istnieje utwórz go.

    /opt/apigee/customer/application/message-processor.properties

    Aby na przykład otworzyć plik za pomocą vi, wpisz:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Dodaj do pliku właściwości wiersz w tym formacie:
    conf_http_HTTP.ignore.allow_header.for.405=true
  3. Zapisz zmiany.
  4. Upewnij się, że właścicielem pliku właściwości jest użytkownik apigee, jak pokazano poniżej:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Uruchom ponownie procesor komunikatów, jak pokazano poniżej:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Jeśli masz więcej niż 1 procesor komunikatów, powtórz powyższe czynności na wszystkich procesorach komunikatów.

Sprawdzanie, czy ignorowanie nagłówka Allow dla właściwości 405 jest ustawione na true na procesorach wiadomości

W tej sekcji opisujemy, jak sprawdzić, czy właściwość HTTP.ignore.allow_header.for.405 została prawidłowo zaktualizowana na true na procesorach wiadomości.

Mimo że do zaktualizowania wartości właściwości na procesorze komunikatów używasz tokena conf_http_HTTP.ignore.allow_header.for.405, musisz sprawdzić, czy rzeczywista właściwość HTTP.ignore.allow_header.for.405 została ustawiona na true.

  1. Na maszynie procesora komunikatów wyszukaj właściwość HTTP.ignore.allow_header.for.405 w katalogu /opt/apigee/edge-message-processor/conf i sprawdź, czy została ustawiona na true jak pokazano poniżej:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Jeśli właściwość zostanie prawidłowo zaktualizowana na procesorze komunikatów, powyższe polecenie powinno wyświetlić wartość właściwości HTTP.ignore.allow_header.for.405 jako true w pliku http.properties, jak pokazano poniżej:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Jeśli nadal widzisz wartość właściwości HTTP.ignore.allow_header.for.405 jako false sprawdź, czy prawidłowo wykonano wszystkie czynności opisane w sekcji Konfigurowanie ignorowania nagłówka Allow dla właściwości 405 na procesorach wiadomości prawidłowo. Jeśli pominiesz jakiś krok, powtórz wszystkie czynności.
  4. Jeśli nadal nie możesz zmodyfikować właściwości HTTP.ignore.allow_header.for.405, skontaktuj się z zespołem pomocy Apigee Edge.

Konfigurowanie ignorowania nagłówka Allow dla właściwości 405 na procesorach wiadomości

W tej sekcji opisano, jak skonfigurować właściwość HTTP.ignore.allow_header.for.405 na jej wartość domyślną false na procesorze komunikatów za pomocą tokena zgodnie ze składnią opisaną w artykule Konfigurowanie Edge.

  1. Sprawdź, czy właściwość HTTP.ignore.allow_header.for.405 została zmieniona na true. Możesz to zrobić, wyszukując tę właściwość w katalogu /opt/apigee/edge-message-processor/conf i sprawdzając jej wartość za pomocą tego polecenia:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Jeśli właściwość jest ustawiona na true na procesorze komunikatów, powyższe polecenie powinno wyświetlić wartość właściwości HTTP.ignore.allow_header.for.405 jako true w pliku http.properties, jak pokazano poniżej:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Jeśli powyższe polecenie pokazuje, że właściwość HTTP.ignore.allow_header.for.405 jest ustawiona na false (wartość domyślna), nie musisz nic robić. Pomiń te kroki.
  4. Jeśli właściwość HTTP.ignore.allow_header.for.405 jest ustawiona na true, wykonaj te czynności, aby przywrócić jej wartość domyślną false.
  5. Na maszynie procesora komunikatów otwórz w edytorze ten plik:

    /opt/apigee/customer/application/message-processor.properties

    Aby na przykład otworzyć plik za pomocą vi, wpisz:

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. Usuń z pliku właściwości ten wiersz:
    conf_http_HTTP.ignore.allow_header.for.405=true
  7. Zapisz zmiany.
  8. Upewnij się, że właścicielem pliku właściwości jest użytkownik apigee, jak pokazano poniżej:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. Uruchom ponownie procesor komunikatów, jak pokazano poniżej:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. Jeśli masz więcej niż 1 procesor komunikatów, powtórz powyższe czynności na wszystkich procesorach komunikatów.

Sprawdzanie, czy ignorowanie nagłówka Allow dla właściwości 405 jest ustawione na false na procesorach wiadomości

W tej sekcji opisujemy, jak sprawdzić, czy właściwość HTTP.ignore.allow_header.for.405 została prawidłowo zaktualizowana na false na procesorach wiadomości.

Mimo że do zaktualizowania wartości na procesorze wiadomości używasz tokena conf_http_HTTP.ignore.allow_header.for.405, musisz sprawdzić, czy rzeczywista właściwość HTTP.ignore.allow_header.for.405 została ustawiona na false.

  1. Na maszynie procesora komunikatów wyszukaj właściwość HTTP.ignore.allow_header.for.405 w katalogu /opt/apigee/edge-message- processor/conf i sprawdź, czy została ustawiona na false jak pokazano poniżej:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Jeśli właściwość zostanie prawidłowo zaktualizowana na procesorze komunikatów, powyższe polecenie powinno wyświetlić wartość właściwości HTTP.ignore.allow_header.for.405 jako false w pliku http.properties, jak pokazano poniżej:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
  3. Jeśli nadal widzisz wartość właściwości HTTP.ignore.allow_header.for.405 jako true, sprawdź, czy prawidłowo wykonano wszystkie czynności opisane w Konfigurowanie ignorowania nagłówka Allow dla właściwości 405 na procesorach wiadomości. Jeśli pominiesz jakiś krok, powtórz wszystkie czynności.
  4. Jeśli nadal nie możesz zmodyfikować właściwości HTTP.ignore.allow_header.for.405, skontaktuj się z zespołem pomocy Apigee Edge.