Felsöka Dev Proxy

Använd den här guiden för att diagnostisera och åtgärda vanliga Dev Proxy-problem. Börja med ditt symptom och gå igenom diagnostikfrågorna för att hitta lösningen.

Symptom: Dev Proxy fångar inte upp begäranden

Du har startat Dev Proxy, men appens begäranden visas inte i Dev Proxy-utdata. Gå igenom de här frågorna för att identifiera orsaken.

Körs Dev Proxy?

Kontrollera att Dev Proxy körs och är redo att avlyssna begäranden.

Vad du ska söka efter:

När du har startat Dev Proxy bör du se utdata som liknar:

 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

Om du inte ser dessa utdata:

Är Dev Proxy registrerat som systemproxy?

Dev Proxy måste registreras som systemproxy för att avlyssna begäranden automatiskt. Om det inte är det kringgår appens begäranden Dev Proxy helt och hållet.

Så här kontrollerar du macOS:

  1. Öppna Systeminställningar>Nätverk
  2. Välj din aktiva nätverksanslutning
  3. Gå till Information...>Proxyservrar
  4. Leta efter säker HTTPS-proxy inställd på 127.0.0.1:8000

Så här kontrollerar du i Windows:

  1. Öppna inställningar>Nätverks- och Internetproxy>
  2. Under Manuell proxykonfiguration kontrollerar du att proxyservern är inställd på 127.0.0.1:8000

Om Dev Proxy inte är registrerad som systemproxy:

Kontrollera konfigurationen för Dev Proxy. Kör devproxy config för att öppna konfigurationsfilen och kontrollera att den inte innehåller:

{
  "asSystemProxy": false
}

Om den här inställningen finns och är inställd på falsetar du bort den eller anger den till trueoch startar sedan om Dev Proxy.

Tittar du på rätt URL:er?

Dev Proxy fångar bara upp begäranden till URL:er som matchar mönster i konfigurationen urlsToWatch .

Så här kontrollerar du:

  1. Titta på Dev Proxy-startutdata för listan över URL:er som övervakas
  2. Jämför dem med den URL som appen anropar

Vanliga problem:

  • Jokertecken saknas: https://api.example.com matchar inte https://api.example.com/users. Använd https://api.example.com/* i stället.
  • Fel domän: Dubbelkolla domännamnet, inklusive underdomäner
  • HTTP vs HTTPS: Kontrollera att protokollet matchar

Så här testar du URL-mönstret:

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

Gör sedan en begäran till ditt API och kontrollera om Dev Proxy loggar det.

Använder du rätt konfigurationsfil?

Dev Proxy kanske använder en annan konfigurationsfil än du förväntar dig.

Så här hittar Dev Proxy konfigurationsfiler:

  1. Om du anger --config-fileanvänder Dev Proxy filen
  2. Annars letar Dev Proxy efter devproxyrc.json i den aktuella katalogen
  3. Om det inte hittas använder Dev Proxy standardinställningar

Så här kontrollerar du vilken konfigurationsfil som används:

Kör Dev Proxy i felsökningsläge:

devproxy --log-level debug

Leta efter utdata som visar vilken konfigurationsfil som läses in.

Så här anger du uttryckligen en konfigurationsfil:

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

Använder du Dev Proxy med ett Node.js program?

Node.js använder inte systemproxyinställningar automatiskt. Du måste konfigurera din Node.js app så att den använder proxyn explicit.

Solution:

global-agent Använd paketet eller konfigurera HTTP-biblioteket för att använda proxyn. Mer information finns i Använda Dev Proxy med Node.js program .

Snabbkorrigering med global agent:

  1. Installera global-agent:

    npm install global-agent
    
  2. Lägg till i appens startpunkt:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Starta appen med proxymiljövariabler:

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

Använder du Dev Proxy med PowerShell i Windows?

PowerShell använder inte automatiskt systemproxyinställningar för webbförfrågningar som görs med Invoke-WebRequest eller Invoke-RestMethod.

Solution:

Konfigurera PowerShell att använda proxyn genom att ange parametern -Proxy :

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

Eller ange proxyn för hela sessionen:

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

Om du använder PowerShell 7+ kan du också använda:

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

Andra plattformar och ramverk

Om du använder andra plattformar, kontrollera följande guider:

Plattform Guide
.NET-applikationer Använda Dev Proxy med .NET-program
.NET 4.8-applikationer .NET 4.8-appar kräver särskild konfiguration
Docker-containrar Använda Dev Proxy i en Docker-container
SharePoint Framework Använda Dev Proxy med SPFx

Symptom: Begäranden fångas upp men skickas oförändrade

Dev Proxy visar dina begäranden i utdata, men de ändras inte, hånas eller returnerar simulerade fel.

Är dina plugin-program aktiverade?

Kontrollera att de plugin-program som du vill använda är aktiverade i konfigurationen.

Så här kontrollerar du:

Öppna konfigurationsfilen och kontrollera att:

  1. Plugin-programmet visas i matrisen plugins
  2. Plugin-programmet har "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Är dina plugin-program i rätt ordning?

Plugin-ordningen är viktig i Dev Proxy. Plugin-program körs i den ordning de visas, och vissa plugin-program kan sluta bearbetas innan andra körs.

Vanligt problem:

Om du har MockResponsePlugin före GenericRandomErrorPlugin, och en mock matchar din begäran, körs pluginen för slumpmässiga fel aldrig.

Solution:

Ordna plugin-program i den ordning du vill att de ska bearbeta begäranden. Mer information finns i Varför utlöses inte slumpmässiga fel när du använder mocks?.

Matchar ditt modell-URL-mönster begäran?

För falska svar måste URL-mönstret exakt matcha begärande-URL:en.

Saker att kontrollera:

  • Frågesträngsparametrar: https://api.example.com/users?id=1 matchar inte https://api.example.com/users
  • Avslutande snedstreck: https://api.example.com/users/ matchar inte https://api.example.com/users
  • Skiftlägeskänslighet: URL-sökvägar är skiftlägeskänsliga

Är begärandemetoden korrekt?

Mockar är metodspecifika. En mock för GET begäranden matchar inte POST begäranden.

Så här kontrollerar du:

I din mocks-fil kontrollerar du att egenskapen method matchar din begäran:

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

Symptom: SSL/certifikatfel i din app

Din app genererar SSL- eller certifikatfel när du försöker göra begäranden via Dev Proxy.

Har du Dev Proxy-certifikatet installerat?

Dev Proxy använder ett självsignerat certifikat för att dekryptera HTTPS-trafik. Systemet måste lita på det här certifikatet.

Solution:

Kör certifikatinstallationskommandot:

devproxy cert ensure

Det här kommandot installerar och litar på Dev Proxy-certifikatet i systemet.

Är certifikatet pålitligt?

Certifikatet kan vara installerat men inte betrott.

Så här kontrollerar du macOS:

  1. Öppna nyckelringsåtkomst
  2. Sök efter "Dev Proxy"
  3. Dubbelklicka på certifikatet
  4. Expandera förtroende
  5. Kontrollera att SSL (Secure Sockets Layer) är inställt på Always Trust

Så här kontrollerar du i Windows:

  1. Kör certmgr.msc
  2. Gå till Certifikat för betrodda rotcertifikatutfärdare>Certifikat
  3. Leta efter Dev Proxy-certifikatet

Om certifikatet inte är betrott:

Ta bort och installera om certifikatet:

devproxy cert remove
devproxy cert ensure

Använder du Node.js?

Node.js använder inte systemcertifikatarkivet som standard. Du måste antingen:

Alternativ 1: Inaktivera certifikatverifiering (endast utveckling):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Varning

Använd NODE_TLS_REJECT_UNAUTHORIZED=0 aldrig i produktion. Inaktiverar verifiering av alla certifikat.

Alternativ 2: Lägg till Dev Proxy-certifikatet i Node.js:

Exportera Dev Proxy-certifikatet och ange NODE_EXTRA_CA_CERTS miljövariabeln:

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

Använder du en annan exekveringsmiljö eller ett annat ramverk?

Olika plattformar hanterar certifikat på olika sätt:

Plattform Lösning
python Använda REQUESTS_CA_BUNDLE variabler eller SSL_CERT_FILE miljövariabler
Java Importera certifikat till Java-nyckelarkiv med hjälp av keytool
.NET Certifikatet är vanligtvis betrott via systembutiken
Docker Montera certifikatet och uppdatera CA-certifikaten i containern

Andra vanliga problem

Alla begäranden misslyckas med gateway-timeout

Orsak:

Dev Proxy kan inte nå mål-API:et.

Solution:

Se Varför misslyckas alla begäranden med gateway-timeout?

Ingen Internetanslutning efter användning av Dev Proxy

Orsak:

Dev Proxy avregistreras inte korrekt som systemproxy.

Solution:

Se Varför fungerar inte min Internetanslutning när jag har använt proxyn?

Få 429 svar oväntat

Orsak:

Frekvensbegränsnings-plugin-program är aktiverade och konfigurerade.

Solution:

Se Varför får jag hela 429 svar?

Databasfel

Fel Lösning
Initieringsfel för SqliteConnection Åtgärda SQLite-konfiguration
"Databasdiskens avbildning är felaktigt formaterad" Återskapa databasen

Få mer hjälp

Om du inte hittar någon lösning:

  1. Aktivera felsökningsloggning: Kör devproxy --log-level debug för detaljerade utdata
  2. Sök efter befintliga problem: Dev Proxy GitHub-problem
  3. Be om hjälp: Få hjälp och support

Se även