Menu
CoddyTech

Permitir otro origen

Parte de la sección API REST del Journey de Node.js de Coddy. Lección 19 de 25.

Una página de un origen necesita permiso para leer una respuesta de una API de otro origen. El navegador envía un encabezado de solicitud Origin. La API puede responder con Access-Control-Allow-Origin indicando el origen permitido.

if (req.get('origin') === 'https://shop.example.com') {
    res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}

El navegador comprueba este encabezado de respuesta antes de mostrar la respuesta a la página. Es posible que la API reciba la solicitud de todos modos: CORS no es una comprobación de inicio de sesión. La barra de solicitudes no aplica CORS, pero su pestaña Encabezados te permite inspeccionar lo que recibiría un navegador.

req.get('origin') lee el encabezado Origin de la solicitud. En los nombres de encabezados no se distingue entre mayúsculas y minúsculas.

challenge icon

Desafío

Fácil

Este es un pequeño proyecto de práctica. Se proporciona la configuración; edita solo server.js.

En la ruta GET proporcionada, establece Allow-Origin solo cuando Origin sea igual a https://board.example.com. Conserva la respuesta JSON. Ejecuta y después envía GET /result con ese encabezado Origin: el encabezado de respuesta debe coincidir. Si Origin es diferente o falta, no se incluirá ningún encabezado Allow-Origin.

En el campo Headers de la barra de solicitudes, introduce Origin: https://board.example.com. Inspecciona los encabezados de respuesta para ver el permiso.

Pruébalo tú mismo

import express from 'express';
const app = express();
app.get('/result', (req, res) => {
    res.json({ ok: true });
});
app.listen(3000);

Todas las lecciones de API REST

Practica por tu cuenta: Playground de Express