Einen anderen Origin zulassen
Teil des Abschnitts REST-APIs der Node.js-Journey von Coddy. Lektion 19 von 25.
Eine Seite auf einem Origin benötigt die Berechtigung, eine API-Antwort von einem anderen Origin zu lesen. Der Browser sendet einen Origin-Request-Header. Die API kann mit Access-Control-Allow-Origin antworten und darin den erlaubten Origin angeben.
if (req.get('origin') === 'https://shop.example.com') {
res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}Der Browser prüft diesen Antwort-Header, bevor er die Antwort für die Seite freigibt. Die API kann die Anfrage trotzdem empfangen: CORS ist keine Anmeldeprüfung. Die Anfragenleiste setzt CORS nicht durch, aber auf ihrem Tab „Headers“ kannst du prüfen, was ein Browser empfangen würde.
req.get('origin') liest den Origin-Header der Anfrage. Bei Header-Namen wird die Groß- und Kleinschreibung ignoriert.
Aufgabe
EinfachDies ist ein kleines Übungsprojekt. Die Einrichtung ist bereits vorhanden; bearbeite nur server.js.
Setze in der bereitgestellten GET-Route Allow-Origin nur dann, wenn Origin gleich https://board.example.com ist. Behalte die JSON-Antwort bei. Führe das Projekt aus und sende dann GET /result mit diesem Origin-Header: Der Antwortheader muss übereinstimmen. Bei einem anderen oder fehlenden Origin wird kein Allow-Origin-Header gesetzt.
Gib im Feld „Headers“ der Anfrageleiste Origin: https://board.example.com ein. Prüfe die Antwortheader, um die Berechtigung zu sehen.
Probier es selbst
import express from 'express';
const app = express();
app.get('/result', (req, res) => {
res.json({ ok: true });
});
app.listen(3000);
Alle Lektionen in REST-APIs
1Ressourcen und Verben
Ressourcen und URLsErstellen mit POST4Browser, Versionen und Konfiguration
Was ist ein Origin?Einen anderen Origin zulassenCORSEine Seite, die die API aufruftÜbe selbstständig: Express-Playground