Як увімкнути CORS в Apache та Nginx?

Обмежити або дозволити обмін ресурсами між сайтами, використовуючи заголовки CORS.


Заголовок CORS (Cross-Origin Resource Sharing) підтримується у всіх сучасних браузерах.

Чи можу я використовувати корси?? Дані про підтримку диска, розміщені в основних веб-переглядачах сайту caniuse.com.

За замовчуванням браузер обмежує запити HTTP між походженнями через скрипти. І, CORS може бути корисним для повторного використання загальних ресурсів програми для інших веб-додатків. Після правильного додавання він дає інструкції браузеру завантажувати програму з іншого походження.

Існує шість популярних типів заголовків CORS, які сервер може надсилати. Давайте вивчимо їх.

Access-Control-Allow-Origin

Найпопулярніший той, який повідомляє браузеру завантажувати ресурси на дозволене походження. Він підтримує підстановку (*) і робить це будь-який домен може завантажувати ресурси. Однак у нього є можливість дозволити певне походження.

Апач

Додайте наступне у httpd.conf або будь-який інший файл конфігурації, який використовується.

Набір заголовків-контроль доступу-дозвіл-вихід "*"

Перезапустіть Apache для тестування. Ви повинні побачити їх у заголовках відповідей.

І, щоб дозволити певне походження (наприклад: https://gf.dev), ви можете використовувати наступне.

Набір заголовків-контроль доступу-дозвіл-вихід "https://gf.dev"

Nginx

Ось приклад дозволити походження https://geekflare.dev. Додайте наступне в серверний блок nginx.conf або використовуваний файл конфігурації.

add_header Access-Control-Allow-Origin "https://geekflare.dev";

Методи контролю доступу-дозволу

Браузер може ініціювати один або кілька методів HTTP для доступу до ресурсів. Наприклад: – GET, PUT, OPTIONS, PUT, DELETE, POST

Апач

Дозволити лише GET і POST.

Заголовок додати методи контролю доступу-дозволу "ВИЙТИ, ПОСТ"

Nginx

Скажімо, вам потрібно додати методи DELETE та OPTIONS, тоді ви можете додати, як указано нижче.

add_header Методи контролю доступу-дозволу "УВАГА, ВАРІАНТИ";

Після перезавантаження слід побачити їх у заголовках відповідей.

Доступ-контроль-дозволити заголовки

Наведені нижче заголовки містяться в сафелістичному списку, тобто не потрібно додавати його. Він повинен працювати за замовчуванням.

  • Тип вмісту
  • Прийміть
  • Мова вмісту
  • Прийняти мову

Однак якщо вам потрібно додати спеціальний, ви можете це зробити. Він підтримує один або кілька заголовків.

Апач

Скажімо, ви хочете дозволити заголовки X-Custom та заголовки X-Powered-By.

Заголовок завжди встановлюється Access-Control-Allow-Headers "X-Custom-Header, X-Powered-By"

Після перезавантаження слід побачити результат у заголовках відповідей.

Nginx

Приклад додавання X-Customer-Software та заголовка X-My-Custom.

add_header-контроль доступу-дозволити-заголовки "Програмне забезпечення X-Custom, X-My-Custom";

Access-Control-Expose-заголовки

Наступні заголовки вже є безпечним списком. Значить, вам не потрібно додавати, якщо ви хочете їх виставити.

  • Закінчується
  • Прагма
  • Кеш-контроль
  • Остання зміна
  • Мова вмісту
  • Тип вмісту

Але якщо вам потрібен інший, ніж безпечний список, ви можете дозволити їх наступним чином.

Апач

Використовуйте підстановку, щоб відкрити всі заголовки.

Заголовки завжди встановлюють заголовки Access-Control-Expose-заголовки "*"

Примітка. У підстановці все ще не вказано заголовок авторизації, і якщо він вам потрібен, його потрібно чітко вказати.

Заголовки завжди встановлюють заголовки Access-Control-Expose-заголовки "Авторизація, *"

Результат повинен виглядати приблизно так.

Nginx

Якщо ви хочете розкрити заголовок Origin.

add_header Access-Control-Expose-заголовки "Походження";

Access-Control-Max-Age

Чи знаєте ви, що дані із заголовків Access-Control-Allow-Headers та Access-Control-Allow-методів можуть бути кешовані? Його можна кешувати до 24 годин у Firefox, 2 години в Chrome (76+).

Щоб відключити кешування, ви можете зберегти значення як -1

Апач

Для кешування протягом 15 хвилин.

Заголовок завжди встановлюється Access-Control-Max-Age "900"

Як бачите, значення знаходиться в секундах.

Nginx

Для кешування протягом однієї години.

add_header Access-Control-Max-Age "3600";

Після додавання перезапустіть Nginx, щоб побачити результати.

Access-Control-Allow-Credentials

Тут можна встановити лише один варіант – true. Це робиться для того, щоб, якщо ви хочете виставити такі дані, як файли cookie, сертифікати TLS, авторизація.

Апач

У заголовку завжди встановлюється контроль доступу та дозвіл дозволу "правда"

Nginx

add_header Access-Control-Allow-Credentials "правда";

і результат.

Перевірка результатів

Після додавання необхідних заголовків ви можете використовувати вбудовані в браузер інструменти розробника або онлайн-перевірка заголовка HTTP.

Висновок

Сподіваюсь, що вищесказане допоможе вам реалізувати заголовок CORS у Apache HTTP та веб-сервері Nginx для кращої безпеки. Можливо, вам також буде цікаво застосувати захищені заголовки OWASP.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map