Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Sprawdź, czy serwer proxy deweloperski jest poprawnie zainstalowany, uruchamiając polecenie
devproxy --version - Jeśli wystąpi błąd, zainstaluj ponownie serwer proxy dewelopera
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:
- Otwórz Ustawienia systemowe>Sieć
- Wybierz aktywne połączenie sieciowe
- Przejdź do szczegółów...>Proxy
- Wyszukaj opcję Bezpieczny serwer proxy HTTP (HTTPS) ustawiony na
127.0.0.1:8000
Jak sprawdzić w systemie Windows:
- Otwieranie ustawień>sieci i internetowego>serwera proxy
- 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ć:
- Sprawdź dane wyjściowe startu Dev Proxy, aby uzyskać listę obserwowanych adresów URL
- Porównaj je z adresem URL wywoływanym przez aplikację
Typowe problemy:
-
Brak symboli wieloznacznych:
https://api.example.comnie pasuje dohttps://api.example.com/users. Użyjhttps://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:
- Jeśli określisz
--config-file, serwer proxy deweloperów używa tego pliku - W przeciwnym razie Dev Proxy szuka
devproxyrc.jsonw bieżącym katalogu - 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:
Zainstaluj agenta globalnego:
npm install global-agentDodaj do punktu wejścia aplikacji:
import { bootstrap } from 'global-agent'; bootstrap();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:
- Wtyczka znajduje się na liście w tablicy
plugins - 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=1nie są zgodnehttps://api.example.com/users - Ukośniki końcowe:
https://api.example.com/users/nie pasują dohttps://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:
- Otwórz Keychain Access
- Wyszukaj "Dev Proxy"
- Kliknij dwukrotnie certyfikat
- Rozwiń relację zaufania
- Sprawdź, czy opcja Secure Sockets Layer (SSL) jest ustawiona na Zawsze ufaj
Jak sprawdzić w systemie Windows:
- Uruchom
certmgr.msc - Przejdź do Zaufani Główni Urzędy Certyfikacji>Certyfikaty
- 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:
-
Włącz rejestrowanie debugowania: uruchom
devproxy --log-level debugw celu uzyskania szczegółowych danych wyjściowych - Wyszukaj istniejące problemy: Problemy z proxy dla deweloperów na GitHubie
- Poproś o pomoc: Uzyskaj pomoc i pomoc techniczną