Risolvere i problemi relativi al proxy di sviluppo

Usare questa guida per diagnosticare e risolvere i problemi comuni del proxy di sviluppo. Iniziare con il sintomo e usare le domande di diagnostica per trovare la soluzione.

Sintomo: Dev Proxy non intercetta le richieste

È stato avviato Dev Proxy, ma le richieste dell'app non vengono visualizzate nell'output del proxy di sviluppo. Esaminare queste domande per identificare la causa.

Dev Proxy è in esecuzione?

Verificare che Dev Proxy sia in esecuzione e pronto per intercettare le richieste.

Cosa cercare:

Dopo l'avvio di Dev Proxy, l'output dovrebbe essere simile al seguente:

 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

Se non vedi questo output:

  • Verificare che Il proxy di sviluppo sia installato correttamente eseguendo devproxy --version
  • Se viene visualizzato un errore, reinstallare Dev Proxy

Dev Proxy è registrato come proxy di sistema?

Dev Proxy deve essere registrato come proxy di sistema per intercettare automaticamente le richieste. In caso contrario, le richieste dell'app ignorano completamente Dev Proxy.

Come verificare in macOS:

  1. Apri Impostazioni di sistema>Rete
  2. Selezionare la connessione di rete attiva
  3. Vai a Dettagli...>Proxy
  4. Cerca il Secure HTTP Proxy (HTTPS) impostato su 127.0.0.1:8000

Come controllare su Windows:

  1. Apri Impostazioni>Rete e Internet>Proxy
  2. In Installazione manuale del proxy verificare che il server proxy sia impostato su 127.0.0.1:8000

Se Dev Proxy non è registrato come proxy di sistema:

Controllare la configurazione del proxy di sviluppo. Eseguire devproxy config per aprire il file di configurazione e verificare che non contenga:

{
  "asSystemProxy": false
}

Se questa impostazione esiste e è impostata su false, rimuoverla o impostarla su true, quindi riavviare Dev Proxy.

Stai guardando gli URL corretti?

Dev Proxy intercetta solo le richieste agli URL che corrispondono ai modelli nella urlsToWatch configurazione.

Procedure di controllo:

  1. Guardare l'output di avvio del Dev Proxy per l'elenco di URL monitorati.
  2. Confrontali con l'URL che l'app sta chiamando

Problemi comuni:

  • Caratteri jolly mancanti: https://api.example.com non corrisponde a https://api.example.com/users. Utilizzare invece https://api.example.com/*.
  • Dominio errato: controllare il nome di dominio, inclusi i sottodomini
  • HTTP e HTTPS: assicurarsi che il protocollo corrisponda

Per testare il modello di URL:

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

Inviare quindi una richiesta all'API e verificare se Dev Proxy lo registra.

Si usa il file di configurazione corretto?

Dev Proxy potrebbe usare un file di configurazione diverso da quello previsto.

Come Dev Proxy trova i file di configurazione:

  1. Se si specifica --config-file, Dev Proxy usa tale file
  2. In caso contrario, Dev Proxy cerca devproxyrc.json nella directory corrente
  3. Se non viene trovato, Dev Proxy usa le impostazioni predefinite

Per verificare quale file di configurazione viene usato:

Eseguire Dev Proxy con log di debug:

devproxy --log-level debug

Cercare l'output che indica quale file di configurazione è stato caricato.

Per specificare in modo esplicito un file di configurazione:

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

Si usa Dev Proxy con un'applicazione Node.js?

Node.js non usa automaticamente le impostazioni proxy di sistema. È necessario configurare l'app Node.js per usare il proxy in modo esplicito.

Soluzione:

Usare il pacchetto global-agent oppure configurare la libreria HTTP per l'uso del proxy. Per istruzioni dettagliate, vedere Usare Dev Proxy con Node.js applicazioni .

Correzione rapida con global-agent:

  1. Installare global-agent:

    npm install global-agent
    
  2. Aggiungi al punto di ingresso dell'app:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Avviare l'app con le variabili di ambiente proxy:

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

Stai usando Dev Proxy con PowerShell su Microsoft Windows?

PowerShell non usa automaticamente le impostazioni proxy di sistema per le richieste Web effettuate con Invoke-WebRequest o Invoke-RestMethod.

Soluzione:

Configurare PowerShell per l'uso del proxy impostando il -Proxy parametro :

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

In alternativa, impostare il proxy per l'intera sessione:

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

Se si usa PowerShell 7+, è anche possibile usare:

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

Altre piattaforme e framework

Se si usano altre piattaforme, vedere queste guide:

Piattaforma Guida
Applicazioni .NET Usare Dev Proxy con applicazioni .NET
Applicazioni .NET 4.8 Le app .NET 4.8 richiedono una configurazione speciale
Contenitori Docker Usare il proxy di sviluppo in un contenitore Docker
SharePoint Framework Usare Dev Proxy con SPFx

Sintomo: le richieste vengono intercettate ma passate senza modifiche

Dev Proxy mostra le richieste nell'output, ma queste non vengono modificate, simulate o restituite con errori simulati.

I plug-in sono abilitati?

Verificare che i plug-in da usare siano abilitati nella configurazione.

Procedure di controllo:

Aprire il file di configurazione e verificare che:

  1. Il plug-in è elencato nella plugins matrice
  2. Il plug-in ha "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

I plug-in sono nell'ordine corretto?

L'ordine dei plug-in è importante in Dev Proxy. I plug-in vengono eseguiti nell'ordine in cui sono elencati e alcuni plug-in potrebbero interrompere l'elaborazione prima che altri vengano eseguiti.

Problema comune:

Se hai MockResponsePlugin prima di GenericRandomErrorPlugin e un mock corrisponde alla tua richiesta, il plug-in di errore casuale non viene mai eseguito.

Soluzione:

Disponi i plug-in nell'ordine in cui vuoi che eselabori le richieste. Per altre informazioni, vedere Perché non vengono generati errori casuali quando si usano i mock?.

Il modello di URL fittizio corrisponde alla richiesta?

Per le risposte fittizie, il modello di URL deve corrispondere esattamente all'URL della richiesta.

Elementi da controllare:

  • Parametri della stringa di query: https://api.example.com/users?id=1 non corrisponde https://api.example.com/users
  • Barre finali: https://api.example.com/users/ non corrisponde https://api.example.com/users
  • Distinzione tra maiuscole e minuscole: i percorsi URL fanno distinzione tra maiuscole e minuscole

Il metodo di richiesta è corretto?

Le simulazioni sono specifiche del metodo. Le richieste di simulazione per GET non sono conformi a quelle di POST.

Procedure di controllo:

Nel tuo file di mock, verifica che la proprietà method corrisponda alla tua richiesta.

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

Sintomo: errori di SSL/certificato nell'app

L'app genera errori SSL o certificato quando si tenta di effettuare richieste tramite Dev Proxy.

È installato il certificato del proxy di sviluppo?

Dev Proxy usa un certificato autofirmato per decrittografare il traffico HTTPS. Il sistema deve considerare attendibile questo certificato.

Soluzione:

Eseguire il comando di installazione del certificato:

devproxy cert ensure

Questo comando installa e considera attendibile il certificato del proxy di sviluppo nel sistema.

Il certificato è attendibile?

Il certificato potrebbe essere installato ma non attendibile.

Come verificare in macOS:

  1. Apri Accesso Portachiavi
  2. Cercare "Dev Proxy"
  3. Fare doppio clic sul certificato
  4. Espandere Fiducia
  5. Verificare che Secure Sockets Layer (SSL) sia impostato su Always Trust

Come controllare su Windows:

  1. Eseguire certmgr.msc
  2. Passare a Autorità di certificazione radice attendibili>Certificati
  3. Cercare il certificato del Dev Proxy

Se il certificato non è attendibile:

Rimuovere e reinstallare il certificato:

devproxy cert remove
devproxy cert ensure

Si usa Node.js?

Node.js non usa l'archivio certificati di sistema per impostazione predefinita. Devi fare una delle seguenti operazioni:

Opzione 1: Disabilitare la convalida dei certificati (solo sviluppo):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Avviso

Non usare mai nell'ambiente NODE_TLS_REJECT_UNAUTHORIZED=0 di produzione. Disabilita tutta la convalida del certificato.

Opzione 2: Aggiungere il certificato del proxy di sviluppo a Node.js:

Esportare il certificato del proxy di sviluppo e impostare la NODE_EXTRA_CA_CERTS variabile di ambiente:

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

Si usa un runtime o un framework diverso?

Piattaforme diverse gestiscono i certificati in modo diverso:

Piattaforma Soluzione
Pitone Usare REQUESTS_CA_BUNDLE o SSL_CERT_FILE variabili di ambiente
Java Importare il certificato nell'archivio chiavi Java usando keytool
.NET Il certificato è in genere considerato attendibile tramite lo store di certificati di sistema.
Docker Montare il certificato e aggiornare i certificati ca nel contenitore

Altri problemi comuni

Tutte le richieste falliscono con timeout del gateway

Causa:

Dev Proxy non riesce a raggiungere l'API di destinazione.

Soluzione:

Consulta Perché tutte le richieste falliscono a causa del timeout del gateway?

Nessuna connessione Internet dopo l'uso di Dev Proxy

Causa:

Dev Proxy non si deregistra correttamente come proxy di sistema.

Soluzione:

Vedere Perché la connessione Internet non funziona dopo l'uso del proxy?

Ottenere 429 risposte in modo imprevisto

Causa:

I plug-in di limitazione della frequenza sono abilitati e configurati.

Soluzione:

Vedere Perché si ricevono 429 risposte?

Errori del database

Errore Soluzione
Errore di inizializzazione di SqliteConnection Correggere la configurazione di SQLite
"L'immagine del disco del database è malformata" Ricompilare il database

Ottenere altre informazioni

Se non è possibile trovare una soluzione:

  1. Abilitare la registrazione di debug: eseguire devproxy --log-level debug per un output dettagliato
  2. Cercare problemi esistenti: problemi di GitHub di Dev Proxy
  3. Richiedere assistenza: Ottenere assistenza e supporto tecnico

Vedere anche