Что такое 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 запроса уже содержит значение этого источника; в следующем уроке мы прочитаем этот заголовок.
Задание
ЛегкоЭто небольшой практический проект. Его настройка уже выполнена; редактируй только 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
1Ресурсы и глаголы
Ресурсы и URLСоздание с помощью POST4Браузеры, версии и конфигурация
Что такое originРазрешение другого originCORSСтраница, вызывающая APIПотренируйтесь самостоятельно: Песочница Express