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