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.
Sfida
FacileQuesto è 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
1Risorse e verbi
Risorse e URLCreare con POST4Browser, versioni e configurazione
Che cos'è un'origineConsentire un'altra origineCORSUna pagina che chiama l'APIEsercitati da solo: Playground Express