CORS
CORS (Cross-Origin Resource Sharing) - перехресний обмін ресурсами. Механізм, який за допомогою HTTP-заголовків дає браузеру дозвіл завантажувати ресурси з певного джерела на запит web-додатка, отриманого з відмінного джерела.
Задля безпеки всі браузери припиняють усі перехресні HTTP-запити які виробляються клієнтським JavaScript. Це - правило одного джерела. Отже додаток створений на одному домені не зможе виконувати запити до HTTP-ресурсів іншого домену.
Тобто на сервері, на якому реалізовано API треба прописати правильні CORS-заголовки для передачі даних між web-браузерами та web-серверами.
Для Node.js це можна реалізувати за допомогою пакету cors.
Установка
npm install cors
Приклад використання (підключення):
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/', (req, res, next) => {
res.json({ message: 'CORS is activated' });
});
app.listen(3000, function () {
console.log('CORS-enabled web server listening on port 3000');
});
У функцію проміжного ПЗ cors, можна передати аргумент - конфігураційний об'єкт з такими властивостями:
origin - Налаштовує заголовок CORS Access-Control-Allow-Origin. Найчастіше це рядок "*" який дозволяє запит від будь-якого домену. Можна вказувати конкретне значення ("http://example.com"), а також використовувати регулярні вирази, або масив рядків або регулярних виразів, якщо доступ до API можливий з різних доменів
methods - Налаштовує заголовок CORS Access-Control-Allow-Methods. Тут вказують, або рядок з HTTP методами - наприклад, "GET, PUT, POST", або масив ['GET', 'PUT', 'POST'], яким дозволені міждоменні запити.
allowedHeaders - Налаштовує заголовок CORS Access-Control-Allow-Headers. Тут вказують рядок з роздільниками-комами, наприклад, "Content-Type, Authorization" або масив ['Content-Type', 'Authorization']. Тобто це - які заголовки дозволені при запиті.
exposedHeaders - Налаштовує заголовок CORS Access-Control-Expose-Headers. Керує заголовками користувача.
credentials - Налаштовує заголовок CORS Access-Control-Allow-Credentials. Встановити true для передачі заголовка, інакше він не вказується.
maxAge - Налаштовує заголовок CORS Access-Control-Max-Age. Встановити ціле число для передачі заголовка, інакше він опускається.
preflightContinue: Надіслати відповідь попередньої перевірки CORS наступному обробнику.
optionsSuccessStatus - Код стану для використання при успішних OPTIONS запитах, бо деякі застарілі браузери (IE11, SmartTV) не працюють зі статусом 204.
Конфігурація за замовчуванням:
{
origin: '*',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
preflightContinue: false,
optionsSuccessStatus: 204
}
Покликання:
Last updated