Como usar o CORS no Node.js e Express.js?
O CORS (Cross-Origin Resource Sharing) é um mecanismo que permite ou restringe requisições entre diferentes domínios. No Express.js, podemos configurar o CORS para permitir que aplicações frontend consumam APIs hospedadas em outro domínio.
1. Por que configurar o CORS?
Por padrão, navegadores bloqueiam requisições cross-origin por segurança. Isso significa que uma API hospedada em api.meusite.com
não pode ser acessada diretamente por um frontend hospedado em app.meusite.com
sem que o CORS esteja ativado.
2. Instalando o pacote cors
O Express.js possui um middleware chamado cors
, que facilita a configuração. Para instalá-lo, execute:
npm install cors
3. Configurando o CORS no Express.js
Após a instalação, importamos e aplicamos o middleware cors()
ao servidor:
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/dados', (req, res) => {
res.json({ mensagem: 'Requisição permitida via CORS' });
});
app.listen(3000, () => console.log('Servidor rodando na porta 3000'));
Agora, qualquer domínio pode acessar os endpoints da API.
4. Restringindo o acesso a domínios específicos
Para maior segurança, podemos permitir apenas requisições de domínios específicos:
app.use(cors({
origin: 'https://meusite.com'
}));
Isso restringe o acesso apenas ao domínio https://meusite.com
.
5. Permitindo múltiplos domínios
Caso seja necessário permitir múltiplos domínios:
const allowedOrigins = ['https://meusite.com', 'https://outrosite.com'];
app.use(cors({
origin: (origin, callback) => {
if (!origin || allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('Não permitido pelo CORS'));
}
}
}));
6. Configurando métodos permitidos
Podemos definir quais métodos HTTP são aceitos na API:
app.use(cors({
origin: '*',
methods: ['GET', 'POST', 'PUT', 'DELETE']
}));
Conclusão
O CORS no Express.js é essencial para permitir que aplicações frontend consumam APIs externas com segurança. Com o middleware cors()
, podemos facilmente configurar permissões para diferentes domínios e métodos, garantindo que nossa API seja acessível apenas por clientes autorizados.
Por que o CORS é essencial para APIs modernas?
O conceito de CORS se tornou essencial com a popularização das aplicações SPA (Single Page Applications) e APIs RESTful. Antes dele, as requisições AJAX eram limitadas ao mesmo domínio, dificultando a comunicação entre servidores distintos.
Hoje, ferramentas como React, Angular e Vue.js dependem do CORS para consumir APIs backend hospedadas em domínios diferentes. Configurar corretamente as permissões evita erros como "Blocked by CORS policy" e melhora a segurança da aplicação.
Algumas aplicações:
- Permitir comunicação entre frontend e backend hospedados em domínios diferentes
- Integrar serviços externos como APIs de terceiros
- Garantir segurança ao restringir acessos indesejados
- Evitar erros de bloqueio de requisições no navegador
- Configurar permissões específicas para métodos HTTP
Dicas para quem está começando
- Use
app.use(cors())
para permitir requisições de qualquer domínio. - Para maior segurança, defina domínios específicos em
origin
. - Se precisar de mais controle, utilize
allowedOrigins
e um callback para validar o acesso. - Teste requisições cross-origin com ferramentas como Postman ou Insomnia.
- Evite configurar
origin: '*'
em produção sem avaliar riscos de segurança.
Contribuições de Lucas Fernandes