Menu
CoddyTech

Что такое origin

Часть раздела REST API путешествия по Node.js на Coddy. Урок 18 из 25.

Обычно браузер позволяет JavaScript страницы читать ответы API с того же источника. Это правило одного источника не позволяет странице свободно читать данные другого сайта. CORS (Cross-Origin Resource Sharing) позволяет серверу разрешить доступ с другого источника с помощью заголовков ответа.

У страницы в браузере есть источник: его схема, хост и порт вместе. Разные пути в рамках одного источника могут обращаться к API без разрешения CORS. Изменение хоста, схемы или порта создает другой источник.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// тот же источник

URL — это встроенный класс, который разбирает адрес на именованные части. Его свойство origin не включает путь и запрос. Адрес страницы задан в стартовом коде. В этом упражнении сравниваются источники; на следующем шаге сервер сможет предоставлять разрешение для доступа с другого источника.

Заголовок Origin запроса уже содержит значение этого источника; в следующем уроке мы прочитаем этот заголовок.

challenge icon

Задание

Легко

Это небольшой практический проект. Его настройка уже выполнена; редактируй только exercise.js.

Возвращай {"same":true}, если переданный адрес имеет тот же источник, что и страница, иначе возвращай false. Отправка POST {"address":"https://board.example.com/api/tasks"} на /result дает true. Если изменить https на http, имя хоста или порт, результат будет false. Адреса в этом упражнении — допустимые абсолютные URL.

Начальный запрос GET /result использует предоставленный пример {"address": "https://board.example.com/api/tasks"}. Используй POST /result с телом JSON, чтобы попробовать другие входные данные.

Попробуйте сами

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

Все уроки раздела REST API

Потренируйтесь самостоятельно: Песочница Express