Permitindo outra origem
Parte da seção APIs REST do Journey de Node.js da Coddy. Lição 19 de 25.
Uma página em uma origem precisa de permissão para ler uma resposta de API de outra origem. O navegador envia um cabeçalho de requisição Origin. A API pode responder com Access-Control-Allow-Origin, indicando a origem permitida.
if (req.get('origin') === 'https://shop.example.com') {
res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}O navegador verifica esse cabeçalho de resposta antes de expor a resposta à página. A API ainda pode receber a requisição: CORS não é uma verificação de login. A barra de requisições não aplica CORS, mas a aba Headers permite inspecionar o que um navegador receberia.
req.get('origin') lê o cabeçalho Origin da requisição. Os nomes dos cabeçalhos não diferenciam maiúsculas de minúsculas.
Desafio
FácilEste é um pequeno projeto de prática. A configuração já está pronta; edite apenas server.js.
Na rota GET fornecida, defina Allow-Origin somente quando Origin for igual a https://board.example.com. Mantenha a resposta JSON. Execute e, em seguida, envie GET /result com esse cabeçalho Origin: o cabeçalho da resposta deve corresponder. Se Origin for diferente ou estiver ausente, nenhum cabeçalho Allow-Origin será enviado.
No campo Headers da barra de requisições, digite Origin: https://board.example.com. Inspecione os cabeçalhos da resposta para ver a permissão.
Experimente você mesmo
import express from 'express';
const app = express();
app.get('/result', (req, res) => {
res.json({ ok: true });
});
app.listen(3000);
Todas as lições de APIs REST
1Recursos e verbos
Recursos e URLsCriando com POST4Navegadores, versões e configuração
O que é uma origemPermitindo outra origemCORSUma página que chama a APIPratique por conta própria: Playground de Express