Compartilhar via


Solucionar problemas do Proxy de Desenvolvimento

Use este guia para diagnosticar e corrigir problemas comuns do Proxy de Desenvolvimento. Comece com seu sintoma e trabalhe com as perguntas de diagnóstico para encontrar a solução.

Sintoma: o Proxy de Desenvolvimento não está interceptando solicitações

Você iniciou o Proxy de Desenvolvimento, mas as solicitações do aplicativo não estão aparecendo na saída do Proxy de Desenvolvimento. Trabalhe nessas perguntas para identificar a causa.

O Proxy Dev está em execução?

Verifique se o Proxy de Desenvolvimento está em execução e pronto para interceptar solicitações.

O que procurar:

Depois de iniciar o Proxy de Desenvolvimento, você deverá ver uma saída semelhante a:

 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 você não vir essa saída:

O Dev Proxy está registrado como o proxy do sistema?

O Dev Proxy deve ser registrado como o proxy do sistema para interceptar solicitações automaticamente. Se não for, as solicitações do aplicativo ignorarão totalmente o Dev Proxy.

Como verificar o macOS:

  1. Abra Configurações do Sistema>Rede
  2. Selecione sua conexão de rede ativa
  3. Vá para Detalhes...>Proxies
  4. Procurar Proxy HTTP Seguro (HTTPS) definido como 127.0.0.1:8000

Como verificar no Windows:

  1. Abrir Configurações>Rede & Internet>Proxy
  2. Em Configuração manual de proxy, verifique se o servidor proxy está definido como 127.0.0.1:8000

Se o Proxy de Desenvolvimento não estiver registrado como proxy do sistema:

Verifique a configuração do Proxy de Desenvolvimento. Execute devproxy config para abrir o arquivo de configuração e verificar se ele não contém:

{
  "asSystemProxy": false
}

Se essa configuração existir e estiver definida como false, remova-a ou defina-a como true, e reinicie o Dev Proxy.

Você está monitorando os URLs corretos?

O Proxy de Desenvolvimento intercepta apenas solicitações para URLs que correspondem a padrões na urlsToWatch configuração.

Como verificar:

  1. Verifique a saída de inicialização do Proxy de Desenvolvimento para a lista de URLs que estão sendo monitoradas
  2. Compare-os com a URL que seu aplicativo está chamando

Problemas comuns:

  • Curingas ausentes: https://api.example.com não corresponde a https://api.example.com/users. Use https://api.example.com/* em seu lugar.
  • Domínio errado: verifique novamente o nome de domínio, incluindo subdomínios
  • HTTP vs HTTPS: verifique se o protocolo corresponde

Para testar o padrão de URL:

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

Em seguida, faça uma solicitação para sua API e verifique se o Proxy de Desenvolvimento o registra.

Você está usando o arquivo de configuração correto?

O Proxy de Desenvolvimento pode estar usando um arquivo de configuração diferente do esperado.

Como o Proxy de Desenvolvimento localiza arquivos de configuração:

  1. Se você especificar --config-file, o Proxy de Desenvolvimento usará esse arquivo
  2. Caso contrário, o Dev Proxy buscará devproxyrc.json no diretório atual
  3. Se não for encontrado, o Proxy de Desenvolvimento usará as configurações padrão

Para verificar qual arquivo de configuração está sendo usado:

Execute o Proxy de Desenvolvimento com o log de depuração:

devproxy --log-level debug

Procure a saída que mostra qual arquivo de configuração é carregado.

Para especificar explicitamente um arquivo de configuração:

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

Você está usando o Proxy de Desenvolvimento com um aplicativo Node.js?

Node.js não usa automaticamente as configurações de proxy do sistema. Você precisa configurar seu aplicativo Node.js para usar o proxy explicitamente.

Solution:

Use o global-agent pacote ou configure sua biblioteca HTTP para usar o proxy. Consulte Usar o Proxy de Desenvolvimento com aplicativos Node.js para obter instruções detalhadas.

Correção rápida com Global Agent:

  1. Instale o agente global:

    npm install global-agent
    
  2. Adicione ao ponto de entrada do aplicativo:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Inicie seu aplicativo com variáveis de ambiente proxy:

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

Você está usando o Proxy de Desenvolvimento com o PowerShell no Windows?

O PowerShell não usa automaticamente as configurações de proxy do sistema para solicitações da Web feitas com Invoke-WebRequest ou Invoke-RestMethod.

Solution:

Configure o PowerShell para usar o proxy definindo o -Proxy parâmetro:

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

Ou defina o proxy para toda a sessão:

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

Se você estiver usando o PowerShell 7+, também poderá usar:

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

Outras plataformas e estruturas

Se você estiver usando outras plataformas, verifique estes guias:

Plataforma Guide
Aplicativos .NET Usar o Proxy de Desenvolvimento com aplicativos .NET
Aplicativos .NET 4.8 Aplicativos .NET 4.8 exigem configuração especial
Contêineres do Docker Usar o Proxy de Desenvolvimento em um contêiner do Docker
Estrutura do SharePoint Usar o Proxy de Desenvolvimento com SPFx

Sintoma: as solicitações são interceptadas, mas passadas sem alterações

O Dev Proxy mostra suas solicitações na saída, mas elas não estão sendo modificadas, simuladas ou retornando erros simulados.

Seus plug-ins estão habilitados?

Verifique se os plug-ins que você deseja usar estão habilitados em sua configuração.

Como verificar:

Abra o arquivo de configuração e verifique se:

  1. O plug-in está listado na plugins matriz
  2. O plug-in tem "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Seus plug-ins estão na ordem correta?

A ordem do Plug-in é importante no Proxy de Desenvolvimento. Os plug-ins são executados na ordem em que estão listados e alguns plug-ins podem parar de processar antes que outros sejam executados.

Problema comum:

Se você tiver MockResponsePlugin antes GenericRandomErrorPlugine uma simulação corresponder à sua solicitação, o plug-in de erro aleatório nunca será executado.

Solution:

Organize plug-ins na ordem em que você deseja que eles processem solicitações. Para obter mais informações, consulte Por que erros aleatórios não são gerados ao usar simulações?.

Seu padrão de URL fictício corresponde à solicitação?

Para respostas simuladas, o padrão de URL deve corresponder exatamente à URL da solicitação.

Itens a serem verificados:

  • Parâmetros de cadeia de caracteres de consulta: https://api.example.com/users?id=1 não corresponde https://api.example.com/users
  • Barras finais: https://api.example.com/users/ não corresponde a https://api.example.com/users
  • Diferenciação de maiúsculas e minúsculas: os caminhos de URL são sensíveis a maiúsculas e minúsculas

O método de solicitação está correto?

Simulações são específicas do método. Uma simulação para GET solicitações não corresponde às POST solicitações.

Como verificar:

No arquivo de simulações, verifique se a method propriedade corresponde à sua solicitação:

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

Sintoma: erros de SSL/certificado em seu aplicativo

Seu aplicativo lança erros de SSL ou certificado ao tentar fazer solicitações pelo Dev Proxy.

Você tem o certificado de Proxy de Desenvolvimento instalado?

O Proxy de Desenvolvimento usa um certificado autoassinado para descriptografar o tráfego HTTPS. Seu sistema deve confiar nesse certificado.

Solution:

Execute o comando de instalação do certificado:

devproxy cert ensure

Esse comando instala e confia no certificado de Proxy de Desenvolvimento em seu sistema.

O certificado é confiável?

O certificado pode ser instalado, mas não confiável.

Como verificar o macOS:

  1. Abrir o Acesso às Chaves
  2. Pesquisar por "Dev Proxy"
  3. Clique duas vezes no certificado
  4. Expandir Confiança
  5. Verifique se a SSL (Secure Sockets Layer) está definida como Always Trust

Como verificar no Windows:

  1. Execute certmgr.msc
  2. Navegar até Autoridades Certificadoras Raiz Confiáveis>Certificados
  3. Procure o certificado de Proxy de Desenvolvimento

Se o certificado não for confiável:

Remova e reinstale o certificado:

devproxy cert remove
devproxy cert ensure

Você está usando Node.js?

Node.js não usa o repositório de certificados do sistema por padrão. Você precisa escolher uma das opções:

Opção 1: Desabilitar validação de certificado (somente desenvolvimento):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Aviso

Nunca use NODE_TLS_REJECT_UNAUTHORIZED=0 em produção. Ele desabilita toda a validação de certificado.

Opção 2: Adicionar o certificado de Proxy de Desenvolvimento ao Node.js:

Exporte o certificado do Proxy de Dev e defina a variável de ambiente NODE_EXTRA_CA_CERTS.

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

Você está usando um runtime ou uma estrutura diferente?

Diferentes plataformas lidam com certificados de forma diferente:

Plataforma Solução
Python Usar REQUESTS_CA_BUNDLE ou SSL_CERT_FILE variáveis de ambiente
Java Importar certificado para o repositório de chaves Java usando keytool
.NET O certificado normalmente é confiável por meio do repositório do sistema
Docker Monte o certificado e atualize os certificados da Autoridade Certificadora no contêiner

Outros problemas comuns

Todas as solicitações falham devido ao timeout do gateway

Causa:

O Proxy de Desenvolvimento não pode alcançar a API de destino.

Solution:

Veja Por que todas as solicitações falham com o tempo limite do gateway?

Nenhuma conexão com a Internet depois de usar o Proxy de Desenvolvimento

Causa:

O Dev Proxy não se desregistra corretamente como proxy do sistema.

Solution:

Veja Por que minha conexão com a Internet não está funcionando depois de usar o proxy?

Obtendo 429 respostas inesperadamente

Causa:

Os plug-ins de limitação de taxa estão habilitados e configurados.

Solution:

Veja por que continuo recebendo 429 respostas?

Erros do banco de dados

Erro Solução
Erro de inicialização do SqliteConnection Corrigir a configuração do SQLite
"A imagem de disco do banco de dados está malformada" Recompilar o banco de dados

Obter mais ajuda

Se você não conseguir encontrar uma solução:

  1. Habilitar registro em log de depuração: Executar devproxy --log-level debug para saída detalhada
  2. Pesquisar problemas existentes: Problemas de Desenvolvimento do Proxy no GitHub
  3. Peça ajuda: Obter ajuda e suporte

Consulte também