Menu
CoddyTech

Was ist ein Origin?

Teil des Abschnitts REST-APIs der Node.js-Journey von Coddy. Lektion 18 von 25.

Ein Browser erlaubt dem JavaScript einer Seite normalerweise, API-Antworten vom eigenen Ursprung zu lesen. Diese Same-Origin-Regel verhindert, dass eine Seite frei die Daten einer anderen Website lesen kann. CORS (Cross-Origin Resource Sharing) ermöglicht es einem Server, einem anderen Ursprung dies mit Response-Headern zu erlauben.

Eine Browserseite hat einen Ursprung: Schema, Host und Port zusammen. Verschiedene Pfade auf demselben Ursprung können eine API ohne CORS-Berechtigung gemeinsam nutzen. Ein anderer Host, ein anderes Schema oder ein anderer Port ergibt einen anderen Ursprung.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// derselbe Ursprung

URL ist eine integrierte Klasse, die eine Adresse in benannte Bestandteile zerlegt. Ihre origin-Eigenschaft lässt den Pfad und die Abfrageparameter weg. Die angegebene Seitenadresse ist im Starter fest vorgegeben. Diese Übung vergleicht Ursprünge; im nächsten Schritt kann ein Server Berechtigungen für den Zugriff über verschiedene Ursprünge hinweg erteilen.

Der Origin-Header einer Anfrage enthält bereits diesen Ursprungswert; in der nächsten Lektion wird dieser Header ausgelesen.

challenge icon

Aufgabe

Einfach

Dies ist ein kleines Übungsprojekt. Die Einrichtung wird bereitgestellt; bearbeite nur exercise.js.

Gib {"same":true} zurück, wenn die angegebene Adresse denselben Ursprung wie die Seite hat, andernfalls false. Ein POST mit {"address":"https://board.example.com/api/tasks"} an /result ergibt true. Wenn du https, den Hostnamen oder den Port änderst, ergibt sich false. Die Adressen in dieser Übung sind gültige absolute URLs.

Das anfängliche GET /result verwendet das bereitgestellte Beispiel {"address": "https://board.example.com/api/tasks"}. Verwende POST /result mit einem JSON-Body, um andere Eingaben auszuprobieren.

Probier es selbst

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

Alle Lektionen in REST-APIs

Übe selbstständig: Express-Playground