Menu
CoddyTech

Consentire un'altra origine

Fa parte della sezione API REST del percorso Node.js di Coddy. Lezione 19 di 25.

Una pagina su un’origine ha bisogno dell’autorizzazione per leggere una risposta API proveniente da un’altra origine. Il browser invia un’intestazione di richiesta Origin. L’API può rispondere con Access-Control-Allow-Origin indicando l’origine autorizzata.

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

Il browser controlla questa intestazione di risposta prima di esporre la risposta alla pagina. L’API potrebbe comunque ricevere la richiesta: CORS non è un controllo di accesso. La barra delle richieste non applica CORS, ma la sua scheda Headers ti permette di esaminare ciò che riceverebbe un browser.

req.get('origin') legge l’intestazione Origin della richiesta. I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole.

challenge icon

Sfida

Facile

Questo è un piccolo progetto di esercitazione. La configurazione è già fornita; modifica solo server.js.

Nella route GET fornita, imposta Allow-Origin solo quando Origin è uguale a https://board.example.com. Mantieni la risposta JSON. Avvia, quindi invia GET /result con quell’header Origin: l’header della risposta deve corrispondere. Un Origin diverso o mancante non deve ricevere alcun header Allow-Origin.

Nel campo Headers della barra delle richieste, inserisci Origin: https://board.example.com. Esamina gli header della risposta per vedere l’autorizzazione.

Provalo tu

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

Tutte le lezioni di API REST

Esercitati da solo: Playground Express