Menu
CoddyTech

Разрешение другого origin

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

Странице с одного источника нужно разрешение, чтобы прочитать ответ API с другого источника. Браузер отправляет заголовок запроса Origin. API может ответить заголовком Access-Control-Allow-Origin, указав в нём разрешённый источник.

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

Браузер проверяет этот заголовок ответа, прежде чем предоставить ответ странице. API всё ещё может получить запрос: CORS — это не проверка входа. Панель запроса не обеспечивает соблюдение правил CORS, но её вкладка Headers позволяет проверить, что получил бы браузер.

req.get('origin') считывает заголовок запроса Origin. Регистр букв в названиях заголовков не имеет значения.

challenge icon

Задание

Легко

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

В предоставленном маршруте GET устанавливайте Allow-Origin, только если Origin равен https://board.example.com. Сохраните ответ JSON. Запустите приложение, затем отправьте запрос GET /result с этим заголовком Origin: заголовок ответа должен совпадать. Если Origin отличается или отсутствует, заголовок Allow-Origin не добавляется.

В поле Headers панели запроса введите Origin: https://board.example.com. Проверьте заголовки ответа, чтобы увидеть разрешение.

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

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

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

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