Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Este é 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

Pratique por conta própria: Playground de Express