Rozwiązywanie problemów z serwerem proxy dev

Skorzystaj z tego przewodnika, aby zdiagnozować i rozwiązać typowe problemy z serwerem proxy deweloperów. Zacznij od objawu i zapoznaj się z pytaniami diagnostycznymi, aby znaleźć rozwiązanie.

Objaw: serwer proxy dewelopera nie przechwytuje żądań

Rozpocząłeś Dev Proxy, ale żądania twojej aplikacji nie pojawiają się w danych wyjściowych Dev Proxy. Zapoznaj się z tymi pytaniami, aby zidentyfikować przyczynę.

Czy Dev Proxy jest uruchomiony?

Sprawdź, czy serwer proxy deweloperów jest uruchomiony i gotowy do przechwytywania żądań.

Czego szukać:

Po uruchomieniu serwera proxy deweloperskiego powinny zostać wyświetlone dane wyjściowe podobne do następujących:

 info    Dev Proxy API listening on http://127.0.0.1:8897...
 info    Dev Proxy listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Jeśli nie widzisz tych danych wyjściowych:

Czy Dev Proxy jest zarejestrowany jako serwer proxy systemu?

Serwer proxy deweloperski musi być zarejestrowany jako serwer proxy systemu w celu automatycznego przechwytywania żądań. Jeśli tak nie jest, żądania aplikacji całkowicie pomijają serwer proxy developerski.

Jak sprawdzić na systemie macOS:

  1. Otwórz Ustawienia systemowe>Sieć
  2. Wybierz aktywne połączenie sieciowe
  3. Przejdź do szczegółów...>Proxy
  4. Wyszukaj opcję Bezpieczny serwer proxy HTTP (HTTPS) ustawiony na 127.0.0.1:8000

Jak sprawdzić w systemie Windows:

  1. Otwieranie ustawień>sieci i internetowego>serwera proxy
  2. W obszarze Ręczna konfiguracja serwera proxy sprawdź, czy serwer proxy jest ustawiony na 127.0.0.1:8000

Jeśli serwer proxy dewelopera nie jest zarejestrowany jako serwer proxy systemu:

Sprawdź konfigurację serwera proxy deweloperskiego. Uruchom polecenie devproxy config , aby otworzyć plik konfiguracji i sprawdzić, czy nie zawiera:

{
  "asSystemProxy": false
}

Jeśli to ustawienie istnieje i jest ustawione na false, usuń je lub ustaw na truewartość , a następnie uruchom ponownie serwer proxy dewelopera.

Czy obserwujesz poprawne adresy URL?

Proxy deweloperski przechwytuje tylko żądania do adresów URL, które pasują do wzorców w konfiguracji.

Jak sprawdzić:

  1. Sprawdź dane wyjściowe startu Dev Proxy, aby uzyskać listę obserwowanych adresów URL
  2. Porównaj je z adresem URL wywoływanym przez aplikację

Typowe problemy:

  • Brak symboli wieloznacznych: https://api.example.com nie pasuje do https://api.example.com/users. Użyj https://api.example.com/* zamiast tego.
  • Nieprawidłowa domena: Sprawdź dwukrotnie nazwę domeny, w tym poddomeny
  • HTTP i HTTPS: upewnij się, że protokół jest zgodny

Aby przetestować wzorzec adresu URL:

devproxy --urls-to-watch "https://your-api.com/*"

Następnie prześlij żądanie do interfejsu API i sprawdź, czy serwer proxy deweloperów go rejestruje.

Czy używasz poprawnego pliku konfiguracji?

Serwer proxy deweloperów może używać innego pliku konfiguracji niż oczekiwano.

Jak serwer proxy deweloperów znajduje pliki konfiguracji:

  1. Jeśli określisz --config-file, serwer proxy deweloperów używa tego pliku
  2. W przeciwnym razie Dev Proxy szuka devproxyrc.json w bieżącym katalogu
  3. Jeśli Dev Proxy nie zostanie znaleziony, używa ustawień domyślnych.

Aby sprawdzić, który plik konfiguracji jest używany:

Uruchom serwer proxy dla dev z logowaniem debugowania:

devproxy --log-level debug

Poszukaj danych wyjściowych, które pokazują, który plik konfiguracji został załadowany.

Aby jawnie określić plik konfiguracji:

devproxy --config-file ./my-config.json

Czy używasz serwera proxy deweloperskiego z aplikacją Node.js?

Node.js nie używa automatycznie ustawień serwera proxy systemu. Musisz skonfigurować aplikację Node.js, aby jawnie używać serwera proxy.

Rozwiązanie:

Użyj pakietu global-agent lub skonfiguruj swoją bibliotekę HTTP, aby korzystać z serwera proxy. Aby uzyskać szczegółowe instrukcje, zobacz Use Dev Proxy with Node.js applications (Używanie serwera proxy deweloperskiego z aplikacjami Node.js ).

Szybka poprawka dotycząca Global-Agent:

  1. Zainstaluj agenta globalnego:

    npm install global-agent
    
  2. Dodaj do punktu wejścia aplikacji:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Uruchom aplikację przy użyciu zmiennych środowiskowych serwera proxy:

    NODE_TLS_REJECT_UNAUTHORIZED=0 GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8000 node app.js
    

Czy używasz serwera proxy dev z programem PowerShell w systemie Windows?

Program PowerShell nie używa automatycznie ustawień serwera proxy systemu dla żądań internetowych wykonywanych za pomocą Invoke-WebRequest lub Invoke-RestMethod.

Rozwiązanie:

Skonfiguruj program PowerShell do korzystania z serwera proxy, ustawiając -Proxy parametr:

Invoke-WebRequest -Uri "https://api.example.com/data" -Proxy "http://127.0.0.1:8000"

Możesz też ustawić serwer proxy dla całej sesji:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
$env:HTTP_PROXY = "http://127.0.0.1:8000"

Jeśli używasz programu PowerShell 7 lub nowszego, możesz również użyć następujących funkcji:

[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://127.0.0.1:8000")

Inne platformy i struktury

Jeśli używasz innych platform, zapoznaj się z następującymi przewodnikami:

Platforma Guide
Aplikacje platformy .NET Używanie serwera proxy deweloperskiego z aplikacjami platformy .NET
Aplikacje platformy .NET 4.8 Aplikacje platformy .NET 4.8 wymagają specjalnej konfiguracji
Kontenery Docker Korzystanie z serwera proxy deweloperskiego w kontenerze platformy Docker
SharePoint Framework Używanie serwera proxy dev z dodatkiem SPFx

Objaw: żądania są przechwytywane, ale przekazywane bez zmian

Proxy deweloperski wyświetla żądania w danych wyjściowych, ale nie są one modyfikowane, symulowane ani zwracane z błędami symulowanymi.

Czy wtyczki są włączone?

Sprawdź, czy w konfiguracji są włączone wtyczki, których chcesz użyć.

Jak sprawdzić:

Otwórz plik konfiguracji i sprawdź, czy:

  1. Wtyczka znajduje się na liście w tablicy plugins
  2. Wtyczka ma "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Czy wtyczki są w prawidłowej kolejności?

Kolejność wtyczek ma znaczenie dla Dev Proxy. Wtyczki są wykonywane w kolejności, w której są wyświetlane, a niektóre wtyczki mogą przestać przetwarzać przed uruchomieniem innych.

Typowy problem:

Jeśli masz MockResponsePlugin, zanim GenericRandomErrorPlugin, a pozorowanie pasuje do żądania, wtyczka błędu losowego nigdy się nie uruchamia.

Rozwiązanie:

Rozmieść wtyczki w kolejności, w której mają przetwarzać żądania. Aby uzyskać więcej informacji, zobacz Dlaczego błędy losowe nie są zgłaszane podczas korzystania z mocków?.

Czy wzorzec makiety adresu URL jest zgodny z żądaniem?

W przypadku pozorowania odpowiedzi wzorzec adresu URL musi dokładnie odpowiadać adresowi URL żądania.

Kwestie do sprawdzenia:

  • Parametry ciągu zapytania: https://api.example.com/users?id=1 nie są zgodne https://api.example.com/users
  • Ukośniki końcowe: https://api.example.com/users/ nie pasują do https://api.example.com/users
  • Rozróżnianie wielkości liter: w ścieżkach adresów URL uwzględniana jest wielkość liter

Czy metoda żądania jest poprawna?

Makiety są dedykowane poszczególnym metodom. Mockowanie żądań GET nie pasuje do żądań POST.

Jak sprawdzić:

W pliku makiety sprawdź, czy właściwość method jest zgodna z żądaniem.

{
  "request": {
    "url": "https://api.example.com/users",
    "method": "GET"
  },
  "response": {
    "statusCode": 200,
    "body": { "users": [] }
  }
}

Objaw: błędy protokołu SSL/certyfikatu w aplikacji

Aplikacja zgłasza błędy protokołu SSL lub certyfikatu podczas próby wysłania żądań za pośrednictwem serwera proxy deweloperów.

Czy masz zainstalowany certyfikat serwera proxy deweloperskiego?

Serwer proxy deweloperów używa certyfikatu z podpisem własnym do odszyfrowania ruchu HTTPS. System musi ufać temu certyfikatowi.

Rozwiązanie:

Uruchom polecenie instalacji certyfikatu:

devproxy cert ensure

To polecenie instaluje certyfikat Dev Proxy i dodaje go do listy zaufanych w systemie.

Czy certyfikat jest zaufany?

Certyfikat może być zainstalowany, ale nie jest zaufany.

Jak sprawdzić na systemie macOS:

  1. Otwórz Keychain Access
  2. Wyszukaj "Dev Proxy"
  3. Kliknij dwukrotnie certyfikat
  4. Rozwiń relację zaufania
  5. Sprawdź, czy opcja Secure Sockets Layer (SSL) jest ustawiona na Zawsze ufaj

Jak sprawdzić w systemie Windows:

  1. Uruchom certmgr.msc
  2. Przejdź do Zaufani Główni Urzędy Certyfikacji>Certyfikaty
  3. Wyszukaj certyfikat dewelopera Proxy

Jeśli certyfikat nie jest zaufany:

Usuń i ponownie zainstaluj certyfikat:

devproxy cert remove
devproxy cert ensure

Czy używasz Node.js?

Node.js domyślnie nie używa systemowego magazynu certyfikatów. Musisz wykonać jedną z następujących czynności:

Opcja 1. Wyłącz walidację certyfikatu (tylko programowanie):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Ostrzeżenie

Nigdy nie używaj NODE_TLS_REJECT_UNAUTHORIZED=0 w środowisku produkcyjnym. Spowoduje to wyłączenie wszystkich weryfikacji certyfikatów.

Opcja 2. Dodaj certyfikat serwera proxy deweloperów do Node.js:

Wyeksportuj certyfikat serwera proxy deweloperów i ustaw zmienną NODE_EXTRA_CA_CERTS środowiskową:

NODE_EXTRA_CA_CERTS=/path/to/devproxy-cert.pem node app.js

Czy używasz innego środowiska uruchomieniowego lub platformy?

Różne platformy obsługują certyfikaty inaczej:

Platforma Rozwiązanie
Python Użyj zmiennej środowiskowej REQUESTS_CA_BUNDLE lub SSL_CERT_FILE
Java Importowanie certyfikatu do magazynu kluczy Java przy użyciu polecenia keytool
.NET Certyfikat jest zwykle zaufany za pośrednictwem magazynu systemowego
Docker Instalowanie certyfikatu i aktualizowanie certyfikatów urzędu certyfikacji w kontenerze

Inne typowe problemy

Wszystkie żądania kończą się niepowodzeniem z błędem przekroczenia limitu czasu bramy

Przyczyna:

Proxy Dev nie może uzyskać dostępu do API docelowego.

Rozwiązanie:

Zobacz Dlaczego wszystkie żądania kończą się niepowodzeniem z przekroczeniem limitu czasu na bramie?

Brak połączenia internetowego po użyciu serwera proxy deweloperskiego

Przyczyna:

Dev Proxy nie wyrejestrowuje się prawidłowo jako systemowy serwer proxy.

Rozwiązanie:

Zobacz Dlaczego moje połączenie internetowe nie działa po użyciu serwera proxy?

Nieoczekiwane otrzymywanie odpowiedzi 429

Przyczyna:

Wtyczki ograniczania szybkości są włączone i konfigurowane.

Rozwiązanie:

Zobacz Dlaczego ciągle otrzymuję odpowiedzi 429?

Błędy bazy danych

Error Rozwiązanie
Błąd inicjowania programu SqliteConnection Naprawianie konfiguracji SQLite
Obraz dysku bazy danych jest zniekształcony Ponowne kompilowanie bazy danych

Uzyskaj więcej pomocy

Jeśli nie możesz znaleźć rozwiązania:

  1. Włącz rejestrowanie debugowania: uruchom devproxy --log-level debug w celu uzyskania szczegółowych danych wyjściowych
  2. Wyszukaj istniejące problemy: Problemy z proxy dla deweloperów na GitHubie
  3. Poproś o pomoc: Uzyskaj pomoc i pomoc techniczną

Zobacz także