Oi, Pedro.
Isso acontece com frequência quando tentamos conectar ferramentas de automação rodando localmente (ou em containers) com os nossos servidores locais de teste, como o json-server.
O erro que você tá enfrentando é uma proteção nativa do n8n chamada SSRF (Server-Side Request Forgery). Por padrão, para evitar brechas de segurança, o n8n bloqueia requisições HTTP direcionadas para o próprio ambiente local (localhost, 127.0.0.1 ou o IP da sua rede interna).
Pra resolver esse comportamento e fazer o n8n conversar com o seu json-server, existem caminhos diferentes dependendo de como você está executando o n8n.
Como solucionar o erro de SSRF no n8n
Cenário 1: Se você está rodando o n8n via Docker (mais comum)
Quando o n8n está dentro de um container Docker, a palavra localhost se refere ao próprio container do n8n, e não à sua máquina onde o json-server está rodando.
- Substitua a URL no n8n: Em vez de usar
http://localhost:3000 ou o seu IP local no nó de requisição HTTP, utilize o endereço especial do Docker:
- No Windows ou Mac:
http://host.docker.internal:3000 - No Linux: Pode ser necessário adicionar a flag
--add-host=host.docker.internal:host-gateway no comando de inicialização do Docker para que essa mesma URL funcione.
Cenário 2: Se você precisa liberar os IPs locais (Variáveis de ambiente)
Se a estratégia anterior não se aplicar ou se você estiver usando o n8n instalado globalmente via npm (ou desktop), será preciso dizer explicitamente ao n8n que ele pode confiar na sua rede local. Isso é feito alterando as variáveis de ambiente do sistema antes de iniciar o n8n.
Você deve definir a variável N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS ou desabilitar o bloqueio de IPs locais com as seguintes propriedades:
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
export N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS=false
n8n start
$env:N8N_BLOCK_ENV_ACCESS_IN_NODE="false"
$env:N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS="false"
n8n start
Se você utiliza o Docker Compose, basta adicionar essas configurações na seção environment do seu arquivo docker-compose.yml:
environment:
- N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS=false
Cenário 3: Uma alternativa rápida com Ngrok
Caso não queira mexer nas configurações de rede do n8n ou do Docker agora, uma saída prática para ambiente de desenvolvimento é expor o seu json-server temporariamente para a internet usando o Ngrok.
- Com o
json-server rodando na porta 3000, abra seu terminal e execute:
ngrok http 3000
- O Ngrok vai gerar uma URL pública segura (ex:
https://subdominio.ngrok-free.app). - Use essa nova URL gerada dentro do nó HTTP do n8n. Como se trata de um endereço externo público, o n8n não aplicará o bloqueio de segurança local.
Espero ter ajudado.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!