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.
Défi
FacileIl 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
1Ressources et verbes
Ressources et URLCréer avec POST4Navigateurs, versions et configuration
Qu’est-ce qu’une origineAutoriser une autre origineCORSUne page qui appelle l’APIEntraînez-vous par vous-même : Playground Express