Resolver Problemas do Proxy de Desenvolvimento

Use este guia para diagnosticar e corrigir problemas comuns de Proxy de Desenvolvimento. Começa pelo teu sintoma e trabalha as perguntas de diagnóstico para encontrar a solução.

Sintoma: Dev Proxy não está a interceptar pedidos

Iniciaste o Dev Proxy, mas os pedidos da tua app não aparecem na saída do Dev Proxy. Trabalhe estas questões para identificar a causa.

O Dev Proxy está a funcionar?

Verifica se o Dev Proxy está a correr e pronto para interceptar pedidos.

O que procurar:

Depois de iniciar o Dev Proxy, deverá ver resultados semelhantes 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 não vires esta saída:

  • Verifique se o Dev Proxy está instalado corretamente ao correr devproxy --version
  • Se aparecer um erro, reinstale o Dev Proxy

O Dev Proxy está registado como proxy do sistema?

Dev Proxy deve ser registado como proxy do sistema para intercetar pedidos automaticamente. Se não for, as solicitações da tua aplicação ignoram completamente o Dev Proxy.

Como verificar no macOS:

  1. Abrir Definições do Sistema>Rede
  2. Selecione a sua ligação de rede ativa
  3. Ir a Detalhes...>Proxies
  4. Procure Proxy HTTP Seguro (HTTPS) definido como 127.0.0.1:8000

Como verificar no Windows:

  1. Abrir Definições>Rede e Internet>Proxy
  2. Em Configuração Manual do proxy, verifique se o servidor proxy está definido como 127.0.0.1:8000

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

Verifica a configuração do teu Proxy de Desenvolvimento. Execute devproxy config para abrir o ficheiro de configuração e verifique se não contém:

{
  "asSystemProxy": false
}

Se esta definição existir e estiver definida para false, removê-la ou defini-la para true, então reiniciar o Dev Proxy.

Está a verificar os URLs corretos?

O Dev Proxy apenas interceta pedidos para URLs que correspondam a padrões na urlsToWatch configuração.

Como verificar:

  1. Veja a saída de arranque do Proxy de Desenvolvimento para a lista de URLs monitorizadas
  2. Compare-os com o URL que a sua aplicação está a chamar

Problemas comuns:

  • Curingas em falta: https://api.example.com não corresponde a https://api.example.com/users. Utilize https://api.example.com/* em substituição.
  • Domínio errado: Verifique novamente o nome de domínio, incluindo subdomínios
  • HTTP vs HTTPS: Certifique-se de que o protocolo corresponde

Para testar o seu padrão de URL:

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

Depois faz um pedido à tua API e verifica se o Dev Proxy regista o código.

Estás a usar o ficheiro de configuração correto?

Dev Proxy pode estar a usar um ficheiro de configuração diferente do que esperas.

Como o Proxy de Desenvolvimento encontra ficheiros de configuração:

  1. Se especificar --config-file, o Proxy de Desenvolvimento usa esse ficheiro
  2. Caso contrário, Dev Proxy procura devproxyrc.json no diretório atual
  3. Se não for encontrado, o Dev Proxy usa as definições padrão

Para verificar qual o ficheiro de configuração que está a ser utilizado:

Execute Dev Proxy com registo de depuração:

devproxy --log-level debug

Procura saídas que mostrem qual ficheiro de configuração está carregado.

Para especificar explicitamente um ficheiro de configuração:

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

Estás a usar Dev Proxy com uma aplicação Node.js?

Node.js não usa automaticamente as definições do proxy do sistema. Tens de configurar a tua aplicação de Node.js para usar explicitamente o proxy.

Solution:

Usa o global-agent pacote ou configura a tua biblioteca HTTP para usar o proxy. Consulte Utilizar o Proxy de Desenvolvimento para aplicações Node.js para instruções detalhadas.

Solução rápida com o agente global:

  1. Instalar global-agent:

    npm install global-agent
    
  2. Adicione ao ponto de entrada da sua aplicação:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Inicie a sua aplicação com variáveis de ambiente proxy:

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

Estás a usar Dev Proxy com PowerShell no Windows?

O PowerShell não usa automaticamente as definições do proxy do sistema para pedidos web feitos 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 definir 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 estiver a usar o PowerShell 7+, também pode usar:

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

Outras plataformas e frameworks

Se estiveres a usar outras plataformas, consulta estes guias:

Plataforma Guia
Aplicações .NET Utilize o Dev Proxy com aplicações .NET
Aplicações .NET 4.8 As aplicações .NET 4.8 requerem configuração especial
Contentores Docker Usar Proxy de Desenvolvimento num contentor Docker
SharePoint Framework Utiliza o Dev Proxy com SPFx

Sintoma: Os pedidos são interceptados mas passados sem alterações

O Dev Proxy mostra os seus pedidos na saída, mas eles não estão a ser modificados, simulados ou a devolver erros simulados.

Os teus plugins estão ativados?

Verifica se os plugins que queres usar estão ativados na tua configuração.

Como verificar:

Abra o seu ficheiro de configuração e verifique que:

  1. O plugin está listado no plugins array
  2. O plugin tem "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Os teus plugins estão na ordem correta?

A ordem dos plugins importa no Dev Proxy. Os plugins executam-se pela ordem em que estão listados, e alguns plugins podem parar de processar antes de outros serem executados.

Problema comum:

Se já tiveres MockResponsePlugin antes de GenericRandomErrorPlugin, e um mock corresponder ao seu pedido, o plugin de erro aleatório nunca executa.

Solution:

Organiza os plugins pela ordem em que queres que processem os pedidos. Para mais informações, consulte o artigo "Por que não são lançados erros aleatórios ao usar 'mocks'?".

O teu padrão de URL simulado corresponde ao pedido?

Para respostas simuladas, o padrão de URL deve corresponder exatamente ao URL do pedido.

Coisas a verificar:

  • Parâmetros da string de consulta: https://api.example.com/users?id=1 não corresponde https://api.example.com/users
  • Cortes posteriores: https://api.example.com/users/ não corresponde https://api.example.com/users
  • Sensibilidade a maiúsculas: Os caminhos de URL são sensíveis a maiúsculas e minúsculas.

O método de pedido está correto?

Os mocks são específicos de cada método. Um mock para os pedidos GET não corresponde aos pedidos POST.

Como verificar:

No seu ficheiro simulado, verifique se a method propriedade corresponde ao seu pedido:

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

Sintoma: Erros de SSL/certificado na sua aplicação

A tua aplicação gera erros SSL ou de certificados ao tentar fazer pedidos através do Dev Proxy.

Tens instalado o certificado Dev Proxy?

O Dev Proxy utiliza um certificado auto-assinado para desencriptar o tráfego HTTPS. O seu sistema deve confiar neste certificado.

Solution:

Execute o comando de instalação do certificado:

devproxy cert ensure

Este comando instala e confia no certificado Dev Proxy no seu sistema.

O certificado é de confiança?

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

Como verificar no macOS:

  1. Abrir Acesso ao Porta-chaves
  2. Pesquisa por "Dev Proxy"
  3. Clique duas vezes no certificado
  4. Expandir a Confiança
  5. Verifique se a Camada de Soquetes Seguros (SSL) está definida para Sempre Confiar

Como verificar no Windows:

  1. Executar certmgr.msc
  2. Navegue para Autoridades Certificadoras Raiz Confiáveis>Certificados
  3. Procure o certificado Dev Proxy

Se o certificado não for confiável:

Remover e reinstalar o certificado:

devproxy cert remove
devproxy cert ensure

Estás a usar Node.js?

Node.js não usa o armazenamento de certificados do sistema por defeito. Precisa de escolher uma das opções:

Opção 1: Desativar a validação de certificados (apenas desenvolvimento):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Advertência

Nunca uso NODE_TLS_REJECT_UNAUTHORIZED=0 em produção. Desativa toda a validação de certificados.

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

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

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

Estás a usar um runtime ou framework diferente?

Diferentes plataformas tratam os certificados de forma diferente:

Plataforma Solução
Python Use REQUESTS_CA_BUNDLE ou SSL_CERT_FILE variáveis de ambiente
Java Importar certificado para a loja de chaves Java usando keytool
.NET O certificado costuma ser confiável através do repositório do sistema
Docker Monte o certificado e atualize os certificados da CA no contentor

Outros problemas comuns

Todas as solicitações falham com o tempo de resposta do gateway

Causa:

O Proxy de desenvolvimento não consegue aceder à API alvo.

Solution:

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

Sem ligação à internet após usar o Dev Proxy

Causa:

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

Solution:

porque é que a minha ligação à internet não funciona depois de usar o proxy?

Receber 429 respostas inesperadamente

Causa:

Os plugins de limitação de taxa estão ativados e configurados.

Solution:

Porque é que continuo a receber 429 respostas?

Erros da base de dados

Erro Solução
Erro de inicialização do SqliteConnection Corrigir a configuração do SQLite
Imagem de disco da base de dados está corrompida Reconstruir a base de dados

Procura mais ajuda

Se não conseguires encontrar uma solução:

  1. Ativar registo de depuração: Executar devproxy --log-level debug para resultados detalhados
  2. Pesquisar problemas existentes: Problemas do Proxy de Desenvolvimento no GitHub
  3. Peça ajuda: Obtenha ajuda e apoio

Consulte também