Řešení potíží s dev proxy serverem

V tomto průvodci můžete diagnostikovat a opravit běžné problémy s dev proxy serverem. Začněte s příznakem a projděte si diagnostické otázky a najděte řešení.

Příznak: Dev Proxy nezchycuje požadavky

Spustili jste dev proxy server, ale požadavky vaší aplikace se nezobrazují ve výstupu dev proxy serveru. Projděte si tyto otázky a identifikujte příčinu.

Běží Dev Proxy?

Zkontrolujte, jestli je vývojový proxy spuštěný a připravený k zachycení požadavků.

Co hledat:

Po spuštění dev Proxy by se měl zobrazit výstup podobný následujícímu:

 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

Pokud se tento výstup nezobrazuje:

  • Spuštěním příkazu zkontrolujte, jestli je dev proxy server správně nainstalovaný. devproxy --version
  • Pokud se zobrazí chyba, přeinstalujte dev proxy server.

Je dev Proxy zaregistrovaný jako systémový proxy server?

Aby bylo možné automaticky zachycovat požadavky, musí být dev proxy zaregistrovaný jako systémový proxy server. Pokud tomu tak není, požadavky vaší aplikace zcela obcházejí Dev Proxy.

Postup kontroly v systému macOS:

  1. Otevřete nastavení systému>síť
  2. Výběr aktivního síťového připojení
  3. Přejít na podrobnosti...>Proxy
  4. Vyhledejte zabezpečený proxy server HTTP (HTTPS) nastavený na 127.0.0.1:8000

Jak zkontrolovat ve Windows:

  1. Otevřít nastavení>sítě a internetového>proxy serveru
  2. V části Ruční nastavení proxy serveru zkontrolujte, jestli je proxy server nastavený na 127.0.0.1:8000

Pokud dev proxy server není zaregistrovaný jako systémový proxy server:

Zkontrolujte konfiguraci dev proxy serveru. Spuštěním devproxy config otevřete konfigurační soubor a ověřte, že neobsahuje:

{
  "asSystemProxy": false
}

Pokud toto nastavení existuje a je nastavené na false, odeberte ho nebo ho nastavte na true, restartujte Dev Proxy.

Sledujete správné adresy URL?

Dev Proxy zachytí jenom požadavky na adresy URL, které odpovídají vzorům v urlsToWatch konfiguraci.

Postup kontroly:

  1. Podívejte se na spouštěcí výstup dev proxy serveru a podívejte se na seznam sledovaných adres URL.
  2. Porovnejte je s adresou URL, kterou aplikace volá.

Běžné problémy:

  • Chybějící zástupné znaky: https://api.example.com neodpovídá https://api.example.com/users. Místo toho použijte https://api.example.com/*.
  • Nesprávná doména: Pečlivě zkontrolujte název domény, včetně subdomén.
  • HTTP vs HTTPS: Ujistěte se, že se protokol shoduje.

K otestování vzoru URL:

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

Pak vytvořte požadavek na vaše rozhraní API a zkontrolujte, jestli ho vývojový proxy server protokoluje.

Používáte správný konfigurační soubor?

Dev Proxy může používat jiný konfigurační soubor, než očekáváte.

Jak dev proxy najde konfigurační soubory:

  1. Pokud zadáte --config-file, dev proxy tento soubor použije.
  2. Jinak dev proxy hledá devproxyrc.json v aktuálním adresáři
  3. Pokud se nenajde, Dev Proxy použije výchozí nastavení.

Ověření použitého konfiguračního souboru:

Spusťte vývojový proxy server s ladicím protokolováním:

devproxy --log-level debug

Vyhledejte výstup, který ukazuje, který konfigurační soubor se načte.

Explicitní zadání konfiguračního souboru:

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

Používáte dev Proxy s Node.js aplikací?

Node.js automaticky nepoužívá nastavení proxy systému. Aplikaci Node.js musíte nakonfigurovat tak, aby používala proxy server explicitně.

Solution:

Použijte balíček nebo nakonfigurujte knihovnu global-agent HTTP tak, aby používala proxy server. Podrobné pokyny najdete v tématu Použití dev proxy serveru s Node.js aplikacemi .

Rychlá oprava s využitím global-agent:

  1. Nainstalujte global-agent:

    npm install global-agent
    
  2. Přidejte do vstupního bodu aplikace:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Spusťte aplikaci s proměnnými prostředí proxy:

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

Používáte Dev Proxy s PowerShellem ve Windows?

PowerShell automaticky nepoužívá nastavení proxy systému pro webové požadavky vytvořené pomocí Invoke-WebRequest nebo Invoke-RestMethod.

Solution:

Nakonfigurujte PowerShell tak, aby používal proxy server nastavením parametru -Proxy :

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

Nebo nastavte proxy server pro celou relaci:

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

Pokud používáte PowerShell 7 nebo novější, můžete použít také:

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

Jiné platformy a architektury

Pokud používáte jiné platformy, projděte si tyto příručky:

Platforma Guide
Aplikace v .NET Použití Dev Proxy s aplikacemi .NET
Aplikace .NET 4.8 Aplikace .NET 4.8 vyžadují speciální konfiguraci
Docker kontejnery Použití dev proxy v kontejneru Dockeru
SharePoint Framework Použití Dev Proxy se SPFx

Příznak: Požadavky se zachytí, ale předávají se beze změny.

Dev Proxy zobrazuje vaše požadavky ve výstupu, ale nedají se upravovat, napodobovat ani vracet simulované chyby.

Jsou vaše moduly plug-in povolené?

Zkontrolujte, jestli jsou ve vaší konfiguraci povolené moduly plug-in, které chcete použít.

Postup kontroly:

Otevřete konfigurační soubor a ověřte, že:

  1. Modul plug-in je uveden v plugins poli.
  2. Plugin má "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Jsou vaše moduly plug-in ve správném pořadí?

Pořadí pluginů je v Dev Proxy důležité. Moduly plug-in se spouštějí v uvedeném pořadí a některé moduly plug-in můžou před spuštěním jiných modulů plug-in zastavit zpracování.

Běžný problém:

Pokud máte MockResponsePlugin před GenericRandomErrorPlugin a mock odpovídá vašemu požadavku, plug-in pro náhodné chyby se nikdy nespustí.

Solution:

Uspořádejte moduly plug-in v pořadí, v jakém mají zpracovávat požadavky. Další informace najdete v tématu Proč se při použití napodobení nevyvolají náhodné chyby?

Odpovídá vzor falešné adresy URL vašemu požadavku?

U napodobených odpovědí musí vzor adresy URL přesně odpovídat adrese URL požadavku.

Co je potřeba zkontrolovat:

  • Parametry řetězce dotazu: https://api.example.com/users?id=1 Neodpovídá https://api.example.com/users
  • Koncové lomítka: https://api.example.com/users/ neodpovídá https://api.example.com/users
  • Rozlišování velkých a malých písmen: Cesty URL rozlišují malá a velká písmena.

Je metoda požadavku správná?

Napodobení jsou specifické pro metody. Napodobení požadavků GET neodpovídá POST požadavkům.

Postup kontroly:

V mockovacím souboru ověřte, že vlastnost method odpovídá vašemu požadavku.

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

Příznak: Chyby SSL nebo certifikátu ve vaší aplikaci

Vaše aplikace hlásí chyby SSL nebo certifikátu při pokusu o provedení požadavků prostřednictvím Dev Proxy.

Máte nainstalovaný certifikát dev proxy?

Dev Proxy používá certifikát podepsaný svým držitelem k dešifrování provozu HTTPS. Váš systém musí důvěřovat tomuto certifikátu.

Solution:

Spusťte příkaz instalace certifikátu:

devproxy cert ensure

Tento příkaz nainstaluje a důvěřuje certifikátu dev proxy serveru ve vašem systému.

Je certifikát důvěryhodný?

Certifikát může být nainstalovaný, ale není důvěryhodný.

Postup kontroly v systému macOS:

  1. Otevření řetězce klíčů
  2. Vyhledejte "Dev Proxy"
  3. Poklikejte na certifikát.
  4. Rozšířit Trust
  5. Ověřte, že je protokol SSL (Secure Sockets Layer) nastavený na hodnotu Always Trust.

Jak zkontrolovat ve Windows:

  1. Spusťte příkaz certmgr.msc.
  2. Přejděte na Důvěryhodné kořenové certifikační autority>Certifikáty
  3. Vyhledejte certifikát dev proxy serveru.

Pokud certifikát není důvěryhodný:

Odeberte a znovu nainstalujte certifikát:

devproxy cert remove
devproxy cert ensure

Používáte Node.js?

Node.js ve výchozím nastavení nepoužívá systémové úložiště certifikátů. Musíte provést jednu z těchto akcí:

Možnost 1: Zakázání ověření certifikátu (pouze vývoj):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Výstraha

Nikdy se nepoužívá NODE_TLS_REJECT_UNAUTHORIZED=0 v produkčním prostředí. Zakáže ověření všech certifikátů.

Možnost 2: Přidání certifikátu dev proxy do Node.js:

Exportujte certifikát dev proxy serveru a nastavte proměnnou NODE_EXTRA_CA_CERTS prostředí:

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

Používáte jiný modul runtime nebo architekturu?

Různé platformy zpracovávají certifikáty odlišně:

Platforma Solution
Python Použití proměnných prostředí REQUESTS_CA_BUNDLE nebo SSL_CERT_FILE
Java Import certifikátu do úložiště klíčů Java pomocí keytool
platforma .NET Certifikát je obvykle důvěryhodný prostřednictvím systémového úložiště.
Docker Připojte certifikát a následně aktualizujte certifikáty CA v kontejneru

Další běžné problémy

Všechny požadavky selžou s vypršením časového limitu brány

Příčina:

Dev Proxy nemůže dosáhnout cílového rozhraní API.

Solution:

Podívejte se, proč všechny požadavky selhávají kvůli vypršení časového limitu brány.

Po použití Dev Proxy není připojení k internetu

Příčina:

Dev Proxy se neodhlásí správně jako systémový proxy server.

Solution:

Přečtěte si, proč po použití proxy serveru nefunguje moje připojení k internetu?

Neočekávané získání odpovědí 429

Příčina:

Moduly plug-in pro omezování rychlosti jsou povolené a nakonfigurované.

Solution:

Podívejte se na proč stále dostávám odpovědi 429?

Chyby databáze

Error Solution
Chyba inicializace sqliteConnection Oprava konfigurace SQLite
Image disku databáze je poškozená. Opětovné sestavení databáze

Získat další nápovědu

Pokud nemůžete najít řešení:

  1. Povolte protokolování ladění: Spusťte devproxy --log-level debug pro podrobný výstup
  2. Hledání existujících problémů: Problémy s GitHubem pro vývoj proxy
  3. Požádat o pomoc: Získání nápovědy a podpory

Viz také