Introdução
Durante o desenvolvimento de aplicações que consomem APIs externas, é comum esbarrar em um problema conhecido por muitos: CORS (Cross-Origin Resource Sharing). Se você trabalha com o Fluig e desenvolve localmente com Angular, provavelmente já viu aquele erro irritante no console:
“Access to XMLHttpRequest at ‘https://fluig.seuservidor.com/api/...' from origin ‘http://localhost:4200’ has been blocked by CORS policy…”
Mas calma, existe uma forma simples e eficiente de contornar esse obstáculo durante o desenvolvimento, sem precisar alterar a configuração do servidor Fluig: configurar um proxy reverso local no Angular.
Entendendo o Problema
O CORS é um mecanismo de segurança dos navegadores que impede que uma aplicação web feita em um domínio (ex: localhost:4200
) faça requisições para outro domínio (ex: fluig.seuservidor.com
) sem a devida permissão. Isso é ótimo em produção, mas um incômodo durante o desenvolvimento local.
Como não temos (ou não queremos) alterar as configurações do Fluig para liberar origens cruzadas, podemos resolver isso redirecionando as requisições localmente.
A Solução: Usando proxy.conf.json
O Angular CLI permite criar um proxy reverso com apenas um arquivo de configuração. Com isso, ele intercepta suas requisições locais e as redireciona como se estivessem vindo do mesmo domínio do backend. Veja como fazer:
- Crie o arquivo
proxy.conf.json
na raiz do seu projeto Angular com o seguinte conteúdo:
{
"/api": {
"target": "https://fluig.seuservidor.com",
"secure": true,
"changeOrigin": true,
"logLevel": "debug"
}
}
- Explicando cada propriedade:
"/api"
: indica o caminho que você quer interceptar. Tudo que começar com/api
será redirecionado."target"
: o endereço do seu servidor Fluig."secure": true
: informa que o target usa HTTPS. Coloquefalse
se estiver usando um certificado inválido no Fluig."changeOrigin": true
: ajusta o cabeçalhoOrigin
da requisição para coincidir com o do target."logLevel": "debug"
: útil para depuração, mostra no terminal o que está sendo redirecionado.
- Agora, inicie o servidor Angular com o proxy ativado:
ng serve --proxy-config proxy.conf.json
- Pronto! Agora ao fazer chamadas para
/api
, por exemplohttp://localhost:4200/api/public/ecm/dataset
, o Angular irá redirecionar parahttps://fluig.seuservidor.com/api/public/ecm/dataset
, sem esbarrar no CORS.
Conclusão
Essa é uma forma prática e rápida de evitar dores de cabeça com CORS durante o desenvolvimento local com Angular e Fluig. Evita alterações inseguras no servidor e mantém o foco no que realmente importa: codar.
Além disso, essa abordagem funciona com qualquer API externa, não só o Fluig — o que a torna uma ferramenta poderosa no seu arsenal de desenvolvimento.