Problembehandlung für Dev Proxy

Verwenden Sie dieses Handbuch, um häufige Dev Proxy-Probleme zu diagnostizieren und zu beheben. Beginnen Sie mit Ihrem Symptom, und arbeiten Sie durch die Diagnosefragen, um die Lösung zu finden.

Symptom: Dev Proxy fängt keine Anfragen ab

Sie haben Dev Proxy gestartet, die Anforderungen Ihrer App werden jedoch nicht in der Dev Proxy-Ausgabe angezeigt. Führen Sie diese Fragen durch, um die Ursache zu identifizieren.

Wird Dev Proxy ausgeführt?

Überprüfen Sie, ob der Dev-Proxy läuft und bereit ist, Anfragen abzufangen.

Suchschwerpunkte:

Nach dem Starten von Dev Proxy sollten Sie eine Ausgabe sehen, die ähnlich aussieht wie:

 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

Wenn diese Ausgabe nicht angezeigt wird:

Ist Dev Proxy als Systemproxy registriert?

Dev Proxy muss als Systemproxy registriert werden, um automatische Anfragen abzufangen. Andernfalls umgehen die Anforderungen Ihrer App den Dev Proxy vollständig.

So überprüfen Sie macOS:

  1. Öffnen Systemeinstellungen>Netzwerk
  2. Wählen Sie Ihre aktive Netzwerkverbindung aus.
  3. Zu Details wechseln...>Proxies
  4. Suchen Sie nach einem Sicheren HTTP-Proxy (HTTPS), der auf 127.0.0.1:8000

So überprüfen Sie Windows:

  1. Öffnen Sie EinstellungenNetzwerk & InternetProxy
  2. Überprüfen Sie unter Manuelles Proxy-Setup, ob der Proxyserver auf 127.0.0.1:8000 eingestellt ist.

Wenn Dev Proxy nicht als Systemproxy registriert ist:

Überprüfen Sie Ihre Dev Proxy-Konfiguration. Führen Sie den Befehl aus devproxy config , um die Konfigurationsdatei zu öffnen und zu überprüfen, ob sie nicht enthalten ist:

{
  "asSystemProxy": false
}

Wenn diese Einstellung vorhanden ist und auf false festgelegt ist, entfernen Sie sie oder setzen Sie sie auf true festgelegt, dann starten Sie Dev Proxy neu.

Beobachten Sie die richtigen URLs?

Dev Proxy fängt nur Anforderungen an URLs ab, die Muster in der urlsToWatch Konfiguration entsprechen.

Vorgehensweise beim Überprüfen:

  1. Sehen Sie sich die Dev Proxy-Startausgabe für die Liste der überwachten URLs an.
  2. Vergleichen Sie sie mit der URL, die Ihre App aufruft.

Häufige Probleme:

  • Fehlende Wildcards: https://api.example.com entspricht nicht https://api.example.com/users. Verwenden Sie stattdessen https://api.example.com/*.
  • Falsche Domäne: Überprüfen Sie den Domänennamen, einschließlich Unterdomänen.
  • HTTP vs HTTPS: Stellen Sie sicher, dass das Protokoll übereinstimmt

So testen Sie Ihr URL-Muster:

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

Stellen Sie dann eine Anforderung an Ihre API vor, und überprüfen Sie, ob der Dev-Proxy sie protokolliert.

Verwenden Sie die richtige Konfigurationsdatei?

Dev Proxy verwendet möglicherweise eine andere Konfigurationsdatei als erwartet.

Wie Dev Proxy Konfigurationsdateien findet:

  1. Wenn Sie angeben --config-file, verwendet Dev Proxy diese Datei.
  2. Andernfalls sucht Dev Proxy im aktuellen Verzeichnis nach devproxyrc.json.
  3. Wenn nicht gefunden, verwendet Dev Proxy Standardeinstellungen.

So überprüfen Sie, welche Konfigurationsdatei verwendet wird:

Ausführen von Dev Proxy mit Debugprotokollierung:

devproxy --log-level debug

Suchen Sie nach einer Ausgabe, die anzeigt, welche Konfigurationsdatei geladen wird.

So geben Sie eine Konfigurationsdatei explizit an:

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

Verwenden Sie Dev Proxy mit einer Node.js Anwendung?

Node.js verwendet keine Systemproxyeinstellungen automatisch. Sie müssen Ihre Node.js-App so konfigurieren, dass der Proxy explizit verwendet wird.

Solution:

Verwenden Sie das global-agent Paket, oder konfigurieren Sie Ihre HTTP-Bibliothek, um den Proxy zu verwenden. Ausführliche Anweisungen finden Sie unter Verwenden von Dev Proxy mit Node.js Anwendungen .

Schnellkorrektur mit global-agent:

  1. Installieren sie den globalen Agent:

    npm install global-agent
    
  2. Fügen Sie den Einstiegspunkt Ihrer App hinzu:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Starten Sie Ihre App mit Proxyumgebungsvariablen:

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

Verwenden Sie Dev Proxy mit PowerShell unter Windows?

PowerShell nutzt nicht automatisch die Systemproxyeinstellungen für Webanfragen, die mit Invoke-WebRequest oder Invoke-RestMethod gemacht werden.

Solution:

Konfigurieren Sie PowerShell so, dass der Proxy verwendet wird, indem Sie den -Proxy Parameter festlegen:

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

Oder legen Sie den Proxy für die gesamte Sitzung fest:

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

Wenn Sie PowerShell 7+ verwenden, können Sie auch Folgendes verwenden:

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

Andere Plattformen und Frameworks

Wenn Sie andere Plattformen verwenden, überprüfen Sie die folgenden Leitfäden:

Plattform Guide
.NET-Anwendungen Verwenden von Dev Proxy mit .NET-Anwendungen
.NET 4.8-Anwendungen .NET 4.8-Apps erfordern eine spezielle Konfiguration
Docker-Container Verwenden des Dev-Proxys in einem Docker-Container
SharePoint Framework Verwenden von Dev Proxy mit SPFx

Symptom: Anforderungen werden abgefangen, aber unverändert durchlaufen

Der Dev-Proxy zeigt Ihre Anfragen in der Ausgabe an, aber sie werden nicht verändert, nicht imitiert und es werden keine simulierten Fehler zurückgegeben.

Sind Ihre Plug-Ins aktiviert?

Überprüfen Sie, ob die plugins, die Sie verwenden möchten, in Ihrer Konfiguration aktiviert sind.

Vorgehensweise beim Überprüfen:

Öffnen Sie Ihre Konfigurationsdatei, und stellen Sie sicher, dass:

  1. Das Plug-In wird im plugins Array aufgeführt.
  2. Das Plug-In hat "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Sind Ihre Plug-Ins in der richtigen Reihenfolge?

Die Plug-In-Reihenfolge ist in Dev Proxy wichtig. Plugins werden in der Reihenfolge ausgeführt, in der sie aufgeführt sind, und einige Plug-Ins können die Verarbeitung beenden, bevor andere ausgeführt werden.

Häufiges Problem:

Wenn Sie MockResponsePlugin vor GenericRandomErrorPlugin haben und ein Mock-Objekt Ihrer Anforderung entspricht, wird das Plugin für zufällige Fehler nie ausgeführt.

Solution:

Ordnen Sie Plugins in der Reihenfolge an, in der sie Anforderungen verarbeiten sollen. Weitere Informationen finden Sie unter Warum werden keine zufälligen Fehler angezeigt, wenn Mocks verwendet werden?.

Stimmt Ihr simuliertes URL-Muster mit der Anforderung überein?

Bei simulierten Antworten muss das URL-Muster genau mit der Anforderungs-URL übereinstimmen.

Zu überprüfende Punkte:

  • Abfragezeichenfolgenparameter: https://api.example.com/users?id=1 entspricht nicht https://api.example.com/users
  • Nachfolgende Schrägstriche: https://api.example.com/users/ stimmen nicht mit https://api.example.com/users überein
  • Groß-/Kleinschreibung: BEI URL-Pfaden wird die Groß-/Kleinschreibung beachtet.

Ist die Anforderungsmethode richtig?

Mocks sind methodenspezifisch. Ein Mock-Objekt für GET Anforderungen stimmt nicht mit POST Anforderungen überein.

Vorgehensweise beim Überprüfen:

Überprüfen Sie in Ihrer Mocks-Datei, ob die method Eigenschaft Ihrer Anforderung entspricht:

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

Symptom: SSL-/Zertifikatfehler in Ihrer App

Ihre App löst SSL- oder Zertifikatfehler aus, wenn Sie versuchen, Anforderungen über Dev Proxy auszuführen.

Haben Sie das Dev Proxy-Zertifikat installiert?

Dev Proxy verwendet ein selbstsigniertes Zertifikat zum Entschlüsseln von HTTPS-Datenverkehr. Ihr System muss diesem Zertifikat vertrauen.

Solution:

Führen Sie den Befehl für die Zertifikatinstallation aus:

devproxy cert ensure

Dieser Befehl installiert und vertraut dem Dev Proxy-Zertifikat auf Ihrem System.

Ist das Zertifikat vertrauenswürdig?

Das Zertifikat ist möglicherweise installiert, aber nicht vertrauenswürdig.

So überprüfen Sie macOS:

  1. Öffnen des Schlüsselbundzugriffs
  2. Suchen nach "Dev Proxy"
  3. Doppelklicken Sie auf das Zertifikat.
  4. Trust erweitern
  5. Überprüfen, ob SSL (Secure Sockets Layer) auf "Always Trust" festgelegt ist

So überprüfen Sie Windows:

  1. Führen Sie certmgr.msc aus.
  2. Navigieren Sie zu Vertrauenswürdige Stammzertifizierungsstellen>Zertifikate
  3. Suchen Sie nach dem Dev-Proxyzertifikat

Wenn das Zertifikat nicht vertrauenswürdig ist:

Entfernen und erneutes Installieren des Zertifikats:

devproxy cert remove
devproxy cert ensure

Verwenden Sie Node.js?

Node.js verwendet standardmäßig nicht den Systemzertifikatspeicher. Sie müssen eine der folgenden Aktionen ausführen:

Option 1: Zertifikatüberprüfung deaktivieren (nur Entwicklung):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Warnung

Niemals NODE_TLS_REJECT_UNAUTHORIZED=0 in der Produktion verwenden. Es deaktiviert alle Zertifikatüberprüfungen.

Option 2: Hinzufügen des Dev-Proxyzertifikats zu Node.js:

Exportieren Sie das Dev Proxy-Zertifikat, und legen Sie die NODE_EXTRA_CA_CERTS Umgebungsvariable fest:

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

Verwenden Sie eine andere Laufzeit oder ein anderes Framework?

Verschiedene Plattformen behandeln Zertifikate unterschiedlich:

Plattform Lösung
Python Verwenden Sie die REQUESTS_CA_BUNDLE- oder SSL_CERT_FILE-Umgebungsvariablen
Java Importieren des Zertifikats in Den Java-Keystore mithilfe von keytool
.NET Das Zertifikat wird in der Regel über den Zertifikatsspeicher als vertrauenswürdig erkannt.
Docker Einbinden des Zertifikats und Aktualisieren der CA-Zertifikate im Container

Andere häufige Probleme

Alle Anforderungen schlagen mit Gateway-Timeout fehl

Ursache:

Dev Proxy kann die Ziel-API nicht erreichen.

Solution:

Lesen Sie , warum bei allen Anfragen ein Gateway-Timeout auftritt?

Keine Internetverbindung nach Verwendung des Dev-Proxys

Ursache:

Dev Proxy deregistert nicht ordnungsgemäß als Systemproxy.

Solution:

Lesen Sie , warum meine Internetverbindung nach der Verwendung des Proxys nicht funktioniert?

Unerwartetes Abrufen von 429 Antworten

Ursache:

Geschwindigkeitsbegrenzungs-Plug-Ins sind aktiviert und konfiguriert.

Solution:

Lesen Sie , warum erhalte ich weiterhin 429 Antworten?

Datenbankfehler

Fehler Lösung
SqliteConnection-Initialisierungsfehler SQLite-Konfiguration korrigieren
"Datenbankdatenträgerimage ist falsch formatiert" Neuerstellen der Datenbank

Weitere Hilfe

Wenn Sie eine Lösung nicht finden können:

  1. Debugprotokollierung aktivieren: Ausführen devproxy --log-level debug für detaillierte Ausgabe
  2. Vorhandene Probleme durchsuchen: Probleme mit Dev-Proxy-GitHub
  3. Hilfe anfordern: Hilfe und Support anfordern

Siehe auch