Menu
CoddyTech

Autoriser une autre origine

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

Une page sur une origine a besoin d’une autorisation pour lire la réponse d’une API provenant d’une autre origine. Le navigateur envoie un en-tête de requête Origin. L’API peut répondre en indiquant l’origine autorisée avec Access-Control-Allow-Origin.

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

Le navigateur vérifie cet en-tête de réponse avant de rendre la réponse accessible à la page. L’API peut tout de même recevoir la requête : CORS ne vérifie pas la connexion. La barre de requête n’applique pas CORS, mais son onglet En-têtes vous permet d’inspecter ce qu’un navigateur recevrait.

req.get('origin') lit l’en-tête Origin de la requête. Les noms des en-têtes ne sont pas sensibles à la casse.

challenge icon

Défi

Facile

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

Dans la route GET fournie, définis Allow-Origin uniquement lorsque Origin est égal à https://board.example.com. Conserve la réponse JSON. Lance le projet, puis envoie une requête GET à /result avec cet en-tête Origin : l’en-tête de réponse doit correspondre. Si l’en-tête Origin est différent ou absent, aucun en-tête Allow-Origin ne doit être envoyé.

Dans le champ Headers de la barre de requête, saisis Origin: https://board.example.com. Inspecte les en-têtes de réponse pour voir l’autorisation.

Essayez vous-même

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

Toutes les leçons de API REST

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