Solución de problemas del proxy de desarrollo

Use esta guía para diagnosticar y corregir problemas comunes del proxy de desarrollo. Comience con su síntoma y trabaje con las preguntas de diagnóstico para encontrar la solución.

Síntoma: El proxy de desarrollo no intercepta solicitudes

Ha iniciado Dev Proxy, pero las solicitudes de su aplicación no se muestran en la salida de Dev Proxy. Siga estas preguntas para identificar la causa.

¿Se está ejecutando el proxy de desarrollo?

Compruebe que Dev Proxy se está ejecutando y está listo para interceptar solicitudes.

Qué buscar:

Después de iniciar Dev Proxy, debería ver una salida similar a la siguiente:

 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 no ve esta salida:

¿Está Dev Proxy registrado como proxy del sistema?

El proxy de desarrollo debe estar registrado como proxy del sistema para interceptar las solicitudes automáticamente. Si no es así, las solicitudes de la aplicación omiten completamente el proxy de desarrollo.

Cómo comprobar en macOS:

  1. Abrir red de configuración del> sistema
  2. Selección de la conexión de red activa
  3. Vaya a Detalles...>Proxies
  4. Busque Proxy HTTP seguro (HTTPS) establecido en 127.0.0.1:8000

Cómo comprobar Windows:

  1. Abrir Configuración>Red e Internet>Proxy
  2. En Configuración manual del proxy, compruebe que el servidor proxy está establecido en . 127.0.0.1:8000

Si el Dev Proxy no está registrado como proxy del sistema:

Compruebe la configuración del proxy de desarrollo. Ejecute devproxy config para abrir el archivo de configuración y comprobar que no contiene:

{
  "asSystemProxy": false
}

Si esta configuración existe y se establece en false, quítelo o establézcalo en true, y luego reinicie Dev Proxy.

¿Está viendo las direcciones URL correctas?

El proxy de desarrollo solo intercepta las solicitudes a las direcciones URL que coinciden con patrones en la urlsToWatch configuración.

Cómo realizar la comprobación:

  1. Mira el output de inicio del proxy de desarrollo para ver la lista de direcciones URL monitorizadas.
  2. Compárelos con la dirección URL a la que llama la aplicación

Problemas comunes:

  • Faltan comodines: https://api.example.com no coincide con https://api.example.com/users. Use https://api.example.com/* en su lugar.
  • Dominio incorrecto: compruebe el nombre de dominio, incluidos los subdominios.
  • HTTP frente a HTTPS: asegúrese de que el protocolo coincide

Para probar el patrón de dirección URL:

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

A continuación, realice una solicitud a la API y compruebe si el proxy de desarrollo lo registra.

¿Usa el archivo de configuración correcto?

El proxy de desarrollo podría estar usando un archivo de configuración diferente al esperado.

Cómo busca el proxy de desarrollo los archivos de configuración:

  1. Si especifica --config-file, el proxy de desarrollo usa ese archivo
  2. De lo contrario, Dev Proxy busca devproxyrc.json en el directorio actual.
  3. Si no se encuentra, el proxy de desarrollo usa la configuración predeterminada.

Para comprobar qué archivo de configuración se está usando:

Ejecuta el proxy de desarrollo con registro de depuración:

devproxy --log-level debug

Busque la salida que muestra qué archivo de configuración se carga.

Para especificar explícitamente un archivo de configuración:

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

¿Estás usando Dev Proxy con una aplicación de Node.js?

Node.js no usa automáticamente la configuración del proxy del sistema. Debe configurar la aplicación de Node.js para que use explícitamente el proxy.

Solution:

Use el global-agent paquete o configure su biblioteca HTTP para usar el proxy. Consulte Uso del proxy de desarrollo con aplicaciones de Node.js para obtener instrucciones detalladas.

Corrección rápida con global-agent:

  1. Instale global-agent:

    npm install global-agent
    
  2. Agregue al punto de entrada de la aplicación:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Inicie la aplicación con variables de entorno de proxy:

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

¿Usa el proxy de desarrollo con PowerShell en Windows?

PowerShell no usa automáticamente la configuración del proxy del sistema para las solicitudes web realizadas con Invoke-WebRequest o Invoke-RestMethod.

Solution:

Configurar PowerShell para usar el proxy estableciendo el parámetro -Proxy.

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

O bien, establezca el proxy para toda la sesión:

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

Si usa PowerShell 7 y versiones posteriores, también puede usar:

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

Otras plataformas y marcos

Si usa otras plataformas, consulte estas guías:

Plataforma Guía
Aplicaciones .NET Uso del proxy de desarrollo con aplicaciones .NET
Aplicaciones de .NET 4.8 Las aplicaciones de .NET 4.8 requieren una configuración especial
Contenedores de Docker Uso del proxy de desarrollo en un contenedor de Docker
SharePoint Framework Uso del proxy de desarrollo con SPFx

Síntoma: las solicitudes se interceptan pero pasan sin cambios

El proxy de desarrollo muestra las solicitudes en la salida, pero no se están modificando, falseando ni devolviendo errores de prueba.

¿Están habilitados los complementos?

Compruebe que los complementos que desea usar están habilitados en la configuración.

Cómo realizar la comprobación:

Abra el archivo de configuración y compruebe que:

  1. El complemento aparece en la plugins matriz.
  2. El complemento tiene "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

¿Los complementos están en el orden correcto?

El orden del plugin es importante en el proxy de desarrollo. Los complementos se ejecutan en el orden en que aparecen y algunos complementos podrían detener el procesamiento antes de que otros se ejecuten.

Problema común:

Si tienes MockResponsePlugin antes de GenericRandomErrorPlugin, y un mock coincide con la solicitud, el complemento de error aleatorio nunca se ejecuta.

Solution:

Organice complementos en el orden en que desee que procesen solicitudes. Para obtener más información, vea ¿Por qué no se producen errores aleatorios al usar simulacros?.

¿El patrón de dirección URL simulada coincide con la solicitud?

Para las respuestas ficticias, el patrón de dirección URL debe coincidir exactamente con la dirección URL de la solicitud.

Cosas que se deben comprobar:

  • Parámetros de cadena de consulta: https://api.example.com/users?id=1 no coincide https://api.example.com/users
  • Barras diagonales finales: https://api.example.com/users/ no coincide con https://api.example.com/users
  • Distinción entre mayúsculas y minúsculas: las rutas de acceso de dirección URL distinguen mayúsculas de minúsculas

¿El método de solicitud es correcto?

Los simulacros son específicos del método. Un simulacro de GET solicitudes no coincide con POST.

Cómo realizar la comprobación:

En su archivo de simulación, compruebe que la propiedad method coincida con su solicitud:

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

Síntoma: errores de SSL/certificado en la aplicación

La aplicación produce errores SSL o de certificado al intentar realizar solicitudes a través del Proxy de Desarrollo.

¿Tiene instalado el certificado de proxy de desarrollo?

Dev Proxy usa un certificado autofirmado para descifrar el tráfico HTTPS. El sistema debe confiar en este certificado.

Solution:

Ejecute el comando de instalación del certificado:

devproxy cert ensure

Este comando instala y confiere confianza al certificado del proxy de desarrollo en tu sistema.

¿Es de confianza el certificado?

Es posible que el certificado se instale pero no sea de confianza.

Cómo comprobar en macOS:

  1. Abrir Keychain Access
  2. Buscar "Proxy de desarrollo"
  3. Haga doble clic en el certificado.
  4. Expandir confianza
  5. Asegúrese de que Secure Sockets Layer (SSL) esté establecido en Confiar siempre.

Cómo comprobar Windows:

  1. Ejecute certmgr.msc:
  2. Vaya a Entidades de certificación raíz de confianza>Certificados
  3. Busque el certificado de proxy de desarrollador.

Si el certificado no es de confianza:

Quite y vuelva a instalar el certificado:

devproxy cert remove
devproxy cert ensure

¿Usa Node.js?

Node.js no usa el almacén de certificados del sistema de forma predeterminada. Debe elegir entre las siguientes opciones:

Opción 1: Deshabilitar la validación de certificados (solo desarrollo):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Advertencia

Nunca se usa NODE_TLS_REJECT_UNAUTHORIZED=0 en producción. Deshabilita toda la validación de certificados.

Opción 2: Agregar el certificado de proxy de desarrollo a Node.js:

Exporte el certificado del Proxy Dev y establezca la variable de entorno NODE_EXTRA_CA_CERTS:

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

¿Usa otro entorno de ejecución o marco de trabajo?

Las distintas plataformas controlan los certificados de forma diferente:

Plataforma Solución
Pitón Utilice variables de entorno REQUESTS_CA_BUNDLE o SSL_CERT_FILE
Java Importación del certificado en el almacén de claves de Java mediante keytool
.NET Normalmente, el certificado se considera confiable mediante el almacén de confianza del sistema
Docker Montar el certificado y actualizar los certificados CA en el contenedor

Otros problemas comunes

Se produce un error en todas las solicitudes con el tiempo de espera de la puerta de enlace

Causa:

El proxy de desarrollo no puede acceder a la API de destino.

Solution:

Consulte ¿Por qué fallan todas las solicitudes con error de tiempo de espera de puerta de enlace?

No hay conexión a Internet después de usar el proxy de desarrollo

Causa:

El Proxy de Desarrollo no se desregistra correctamente como proxy del sistema.

Solution:

Consulte ¿Por qué mi conexión a Internet no funciona después de usar el proxy?

Obtención de 429 respuestas inesperadamente

Causa:

Los complementos de limitación de velocidad están habilitados y configurados.

Solution:

Vea ¿Por qué obtengo 429 respuestas?

Errores de base de datos

Error Solución
Error de inicialización de SqliteConnection Corrección de la configuración de SQLite
"La imagen del disco de base de datos tiene un formato incorrecto" Recompilación de la base de datos

Obtener más ayuda

Si no encuentra una solución:

  1. Habilitación del registro de depuración: ejecutar devproxy --log-level debug para obtener una salida detallada
  2. Buscar incidencias existentes: incidencias de GitHub del proxy de desarrollo
  3. Solicitar ayuda: Obtener ayuda y soporte técnico

Consulte también