Menu
CoddyTech

Che cos'è un'origine

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

Un browser normalmente consente a una pagina di leggere le risposte API provenienti dalla propria origine tramite JavaScript. Questa regola della stessa origine impedisce a una pagina di leggere liberamente i dati di un altro sito. CORS, Cross-Origin Resource Sharing, consente a un server di autorizzare un’altra origine tramite le intestazioni della risposta.

Una pagina nel browser ha un’origine: l’insieme di schema, host e porta. Percorsi diversi sulla stessa origine possono condividere un’API senza autorizzazione CORS. Se cambia l’host, lo schema o la porta, si tratta di un’origine diversa.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// la stessa origine

URL è una classe integrata che scompone un indirizzo nelle sue parti denominate. La sua proprietà origin esclude il percorso e la query. L’indirizzo della pagina fornito è fisso nel codice iniziale. Questo esercizio confronta le origini; nel passaggio successivo un server potrà concedere l’autorizzazione tra origini diverse.

L’intestazione Origin di una richiesta contiene già questo valore di origine; la prossima lezione leggerà tale intestazione.

challenge icon

Sfida

Facile

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

Restituisci {"same":true} quando l’indirizzo fornito condivide l’origine della pagina, altrimenti restituisci false. Inviare {"address":"https://board.example.com/api/tasks"} con POST a /result restituisce true. Cambiare https in http, l’host o la porta restituisce false. Gli indirizzi in questo esercizio sono URL assoluti validi.

La GET /result iniziale usa l’esempio fornito {"address": "https://board.example.com/api/tasks"}. Usa POST /result con un corpo JSON per provare altri input.

Provalo tu

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

Tutte le lezioni di API REST

Esercitati da solo: Playground Express