Menu
CoddyTech

Qué es un origen

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

Normalmente, un navegador permite que el JavaScript de una página lea las respuestas de API de su propio origen. Esta regla del mismo origen impide que una página lea libremente los datos de otro sitio. CORS, uso compartido de recursos entre orígenes, permite que un servidor dé permiso a otro origen mediante encabezados de respuesta.

Una página del navegador tiene un origen: su esquema, host y puerto en conjunto. Las distintas rutas del mismo origen pueden compartir una API sin permiso de CORS. Si cambia el host, el esquema o el puerto, se trata de un origen diferente.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// el mismo origen

URL es una clase integrada que divide una dirección en partes con nombre. Su propiedad origin excluye la ruta y la consulta. La dirección de página proporcionada está fijada en el código inicial. Este ejercicio compara orígenes; el siguiente paso permitirá que un servidor conceda permiso entre ellos.

El encabezado Origin de una solicitud ya contiene este valor de origen; en la siguiente lección leeremos ese encabezado.

challenge icon

Desafío

Fácil

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

Devuelve {"same":true} cuando la dirección proporcionada comparte el origen de la página; de lo contrario, devuelve false. Enviar {"address":"https://board.example.com/api/tasks"} mediante POST a /result da true. Cambiar https por http, el host o el puerto da false. Las direcciones de este ejercicio son URL absolutas válidas.

La solicitud inicial GET /result utiliza el ejemplo proporcionado {"address": "https://board.example.com/api/tasks"}. Usa POST /result con un cuerpo JSON para probar otras entradas.

Pruébalo tú mismo

const page = 'https://board.example.com/tasks';
export function exercise({ address }) {
    return { same: address === page };
}

Todas las lecciones de API REST

Practica por tu cuenta: Playground de Express