Résoudre les problèmes liés au proxy de développement

Utilisez ce guide pour diagnostiquer et résoudre les problèmes courants liés au proxy de développement. Commencez par votre symptôme et parcourez les questions de diagnostic pour trouver la solution.

Symptôme : le proxy de développement n’intercepte pas les demandes

Vous avez démarré le proxy de développement, mais les requêtes de votre application ne s’affichent pas dans la sortie du proxy de développement. Parcourez ces questions pour identifier la cause.

Le proxy de développement est-il en cours d’exécution ?

Vérifiez que le proxy de développement est en cours d’exécution et prêt à intercepter les requêtes.

Que recherchez-vous :

Après avoir démarré le proxy de développement, vous devez voir une sortie similaire à :

 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

Si vous ne voyez pas cette sortie :

Le proxy de développement est-il inscrit en tant que proxy système ?

Le proxy de développement doit être inscrit en tant que proxy système pour intercepter automatiquement les requêtes. Si ce n’est pas le cas, les demandes de votre application contournent entièrement le proxy de développement.

Comment vérifier sur macOS :

  1. Ouvrir Paramètres du système>Réseau
  2. Sélectionner votre connexion réseau active
  3. Accédez à Détails...>Proxy
  4. Recherchez le proxy HTTP sécurisé (HTTPS) défini sur 127.0.0.1:8000

Comment vérifier sur Windows :

  1. Ouvrir ParamètresRéseau & InternetProxy
  2. Sous Configuration manuelle du proxy, vérifiez que le serveur proxy est défini sur 127.0.0.1:8000

Si le proxy de développement n’est pas inscrit en tant que proxy système :

Vérifiez la configuration de votre proxy de développement. Exécutez devproxy config pour ouvrir le fichier de configuration et vérifiez qu’il ne contient pas :

{
  "asSystemProxy": false
}

Si ce paramètre existe et est défini sur false, supprimez-le ou définissez-le truesur , puis redémarrez le proxy de développement.

Regardez-vous les URL correctes ?

Le proxy de développement intercepte uniquement les requêtes adressées aux URL qui correspondent aux modèles de la urlsToWatch configuration.

Voici comment vérifier :

  1. Examinez la sortie de démarrage du proxy de développement pour obtenir la liste des URL surveillées
  2. Comparez-les avec l’URL que votre application appelle

Problèmes courants :

  • Caractères génériques manquants : https://api.example.com ne correspond https://api.example.com/userspas . Utilisez https://api.example.com/* à la place.
  • Domaine incorrect : Vérifiez le nom de domaine, y compris les sous-domaines
  • HTTP et HTTPS : vérifiez que le protocole correspond

Pour tester votre modèle d’URL :

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

Effectuez ensuite une demande à votre API et vérifiez si le proxy de développement l’enregistre.

Utilisez-vous le fichier de configuration approprié ?

Le proxy de développement peut utiliser un fichier de configuration différent de celui attendu.

Comment le proxy de développement trouve les fichiers de configuration :

  1. Si vous spécifiez --config-file, dev Proxy utilise ce fichier
  2. Sinon, le proxy de développement recherche devproxyrc.json dans le répertoire actif
  3. S’il est introuvable, le proxy de développement utilise les paramètres par défaut

Pour vérifier le fichier de configuration utilisé :

Exécutez le proxy de développement avec la journalisation en mode débogage :

devproxy --log-level debug

Recherchez la sortie qui indique le fichier de configuration chargé.

Pour spécifier explicitement un fichier de configuration :

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

Utilisez-vous le proxy de développement avec une application Node.js ?

Node.js n’utilise pas automatiquement les paramètres de proxy système. Vous devez configurer votre application Node.js pour utiliser le proxy explicitement.

Solution:

Utilisez le global-agent package ou configurez votre bibliothèque HTTP pour utiliser le proxy. Consultez Utiliser le proxy de développement avec des applications Node.js pour obtenir des instructions détaillées.

Correctif rapide avec global-agent :

  1. Installez global-agent :

    npm install global-agent
    
  2. Ajoutez le point d’entrée de votre application :

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Démarrez votre application avec des variables d’environnement proxy :

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

Utilisez-vous le proxy de développement avec PowerShell sur Windows ?

PowerShell n’utilise pas automatiquement les paramètres de proxy système pour les requêtes web effectuées avec Invoke-WebRequest ou Invoke-RestMethod.

Solution:

Configurez PowerShell pour utiliser le proxy en définissant le -Proxy paramètre :

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

Ou définissez le proxy pour l’ensemble de la session :

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

Si vous utilisez PowerShell 7+, vous pouvez également utiliser :

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

Autres plateformes et infrastructures

Si vous utilisez d’autres plateformes, consultez les guides suivants :

Platform Guide
Applications .NET Utiliser le proxy de développement avec des applications .NET
Applications du framework .NET 4.8 Les applications .NET 4.8 nécessitent une configuration spéciale
Conteneurs Docker Utiliser le proxy de développement dans un conteneur Docker
SharePoint Framework Utiliser le proxy de développement avec SPFx

Symptôme : les requêtes sont interceptées, mais transmises sans modification

Le proxy de développement affiche vos requêtes à l'écran, mais elles ne sont ni modifiées, ni mockées, ni retournent des erreurs simulées.

Vos plug-ins sont-ils activés ?

Vérifiez que les plug-ins que vous souhaitez utiliser sont activés dans votre configuration.

Voici comment vérifier :

Ouvrez votre fichier de configuration et vérifiez que :

  1. Le plug-in est répertorié dans le plugins tableau
  2. Le plug-in a "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Vos plug-ins sont-ils dans l’ordre correct ?

L’ordre du plug-in est important dans le proxy de développement. Les plug-ins s’exécutent dans l’ordre dans lequel ils sont répertoriés, et certains plug-ins peuvent arrêter le traitement avant que d’autres ne s’exécutent.

Problème courant :

Si vous avez MockResponsePlugin avant GenericRandomErrorPlugin, et qu’une simulation de test correspond à votre demande, le plug-in d’erreur aléatoire ne se déclenche jamais.

Solution:

Organisez les plug-ins dans l’ordre dans lequel vous souhaitez qu’ils traitent les demandes. Pour plus d’informations, consultez Pourquoi les erreurs aléatoires ne sont-elles pas générées lors de l’utilisation de mocks ?.

Votre modèle d’URL fictif correspond-il à la requête ?

Pour les réponses fictives, le modèle d’URL doit correspondre exactement à l’URL de la requête.

Éléments à vérifier :

  • Paramètres de chaîne de requête : https://api.example.com/users?id=1 ne correspond pas https://api.example.com/users
  • Slashes de fin : https://api.example.com/users/ ne correspond pas à https://api.example.com/users
  • Sensibilité à la casse : les chemins d’URL respectent la casse

La méthode de requête est-elle correcte ?

Les maquettes sont spécifiques à la méthode. Une simulation de GET requêtes ne correspond pas aux POST requêtes.

Voici comment vérifier :

Dans votre fichier fictif, vérifiez que la method propriété correspond à votre demande :

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

Symptôme : erreurs SSL/certificat dans votre application

Votre application lève des erreurs SSL ou de certificat lors de la tentative d’effectuer des requêtes via le proxy de développement.

Avez-vous installé le certificat du proxy de développement ?

Le proxy de développement utilise un certificat auto-signé pour déchiffrer le trafic HTTPS. Votre système doit approuver ce certificat.

Solution:

Exécutez la commande d’installation du certificat :

devproxy cert ensure

Cette commande installe et approuve le certificat proxy de développement sur votre système.

Le certificat est-il approuvé ?

Le certificat peut être installé, mais pas approuvé.

Comment vérifier sur macOS :

  1. Ouvrir Trousseau d'accès
  2. Rechercher « Proxy de développement »
  3. Double-cliquez sur le certificat
  4. Étendre la confiance
  5. Vérifiez que ssl (Secure Sockets Layer) est défini sur Always Trust

Comment vérifier sur Windows :

  1. Exécutez certmgr.msc
  2. Accédez à Autorités de certification racine approuvées>Certificats
  3. Recherchez le certificat du proxy de développement

Si le certificat n’est pas approuvé :

Supprimez et réinstallez le certificat :

devproxy cert remove
devproxy cert ensure

Utilisez-vous Node.js?

Node.js n’utilise pas le magasin de certificats système par défaut. Vous devez choisir l'une des options suivantes :

Option 1 : Désactiver la validation de certificat (développement uniquement) :

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Avertissement

Ne jamais utiliser NODE_TLS_REJECT_UNAUTHORIZED=0 en production. Elle désactive toutes les validations de certificat.

Option 2 : Ajouter le certificat proxy de développement à Node.js:

Exportez le certificat du proxy de développement et définissez la variable d’environnement NODE_EXTRA_CA_CERTS :

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

Utilisez-vous un autre runtime ou infrastructure ?

Différentes plateformes gèrent les certificats différemment :

Platform Solution
Python Utilisez les variables d’environnement REQUESTS_CA_BUNDLE ou SSL_CERT_FILE
Java Importer un certificat dans un magasin de clés Java à l’aide de keytool
.NET Le certificat est généralement approuvé par le biais du magasin système
Docker Monter le certificat et mettre à jour les certificats d’autorité de certification dans le conteneur

Autres problèmes courants

Toutes les demandes échouent avec le délai d’expiration de la passerelle

Cause :

Le proxy de développement ne peut pas atteindre l’API cible.

Solution:

Découvrez pourquoi toutes les demandes échouent-elles avec le délai d’expiration de la passerelle ?

Aucune connexion Internet après l’utilisation du proxy de développement

Cause :

Le proxy de développement ne se désenregistre pas correctement en tant que proxy système.

Solution:

Voir Pourquoi ma connexion Internet ne fonctionne-t-elle pas après l’utilisation du proxy ?

Obtention inattendue de 429 réponses

Cause :

Les plug-ins de limitation de débit sont activés et configurés.

Solution:

Voir Pourquoi puis-je continuer à obtenir 429 réponses ?

Erreurs de base de données

Erreur Solution
Erreur d’initialisation sqliteConnection Corriger la configuration SQLite
« Image de disque de base de données malformée » Reconstruire la base de données

Obtenir de l’aide supplémentaire

Si vous ne trouvez pas de solution :

  1. Activer la journalisation du débogage : Exécuter devproxy --log-level debug pour obtenir une sortie détaillée
  2. Rechercher des problèmes existants : Problèmes GitHub du proxy de développement
  3. Demander de l’aide : Obtenir de l’aide et du support

Voir aussi