Menu
CoddyTech

Qu’est-ce qu’une origine

Fait partie de la section API REST du Journey Node.js de Coddy. Leçon 18 sur 25.

Un navigateur permet normalement au JavaScript d’une page de lire les réponses d’API provenant de sa propre origine. Cette règle de même origine empêche une page de lire librement les données d’un autre site. CORS, ou partage des ressources entre origines (Cross-Origin Resource Sharing), permet à un serveur d’autoriser une autre origine au moyen d’en-têtes de réponse.

Une page dans un navigateur a une origine : son schéma, son hôte et son port réunis. Des chemins différents sur une même origine peuvent partager une API sans autorisation CORS. Un changement d’hôte, de schéma ou de port crée une origine différente.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// la même origine

URL est une classe intégrée qui décompose une adresse en parties nommées. Sa propriété origin exclut le chemin et la requête. L’adresse de la page fournie est fixée dans le code de démarrage. Cet exercice compare les origines ; l’étape suivante permettra à un serveur d’accorder des autorisations entre elles.

L’en-tête Origin d’une requête contient déjà cette valeur d’origine ; la prochaine leçon lira cet en-tête.

challenge icon

Défi

Facile

Il s’agit d’un petit projet d’entraînement. Sa configuration est fournie ; modifie uniquement exercise.js.

Renvoie {"same":true} lorsque l’adresse fournie partage la même origine que la page, sinon renvoie false. Envoyer {"address":"https://board.example.com/api/tasks"} avec POST à /result donne true. Si tu changes https en http, l’hôte ou le port, le résultat est false. Les adresses de cet exercice sont des URL absolues valides.

Le GET /result initial utilise l’exemple fourni {"address": "https://board.example.com/api/tasks"}. Utilise POST /result avec un corps JSON pour essayer d’autres entrées.

Essayez vous-même

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

Toutes les leçons de API REST

Entraînez-vous par vous-même : Playground Express