К основному контенту

⚡ Как включить CORS в Apache и Nginx?

Ограничьте или разрешите совместное использование ресурсов между сайтами, используя заголовок CORS.

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

По умолчанию браузер ограничивает cros-origin HTTP-запросы через скрипт.

И CORS может быть полезен для повторного использования общих ресурсов приложений в других веб-приложениях.

Как только он добавлен правильно, он инструктирует браузер загрузить приложение из другого источника.

Существует шесть популярных типов заголовков CORS, которые сервер может отправлять.

Давайте исследуем их.

1 Access-Control-Allow-Origin

Самый популярный тип, который говорит браузеру загружать ресурсы по разрешенному источнику.

Он поддерживает подстановочные знаки (*), и при этом любой домен может загружать ресурсы.

Тем не менее, он имеет возможность разрешить конкретный источник.

Apache

Добавьте следующее в httpd.conf или любой другой используемый файл конфигурации.

Header set Access-Control-Allow-Origin "*"
Перезапустите Apache для проверки. Вы должны увидеть что-то подобное заголовках.

И, чтобы разрешить доступ от определенного источника (например: https://gf.dev), вы можете использовать следующее:
Header set Access-Control-Allow-Origin "https://gf.dev"

Nginx

Вот пример, чтобы разрешить происхождение https://itisgood.ru. Добавьте следующее в блок сервера nginx.conf или в используемый файл конфигурации.
add_header Access-Control-Allow-Origin "https://itisgood.ru";

2 Access-Control-Allow-Methods

Браузер может инициировать один или несколько методов HTTP для доступа к ресурсам.

Пример: — GET, PUT, OPTIONS, PUT, DELETE, POST

Apache

Разрешить только GET и только POST.
Header add Access-Control-Allow-Methods "GET, POST"

Nginx

Допустим, вам нужно добавить методы DELETE и OPTIONS, тогда вы можете это сделать, как показано ниже:
add_header Access-Control-Allow-Methods "DELETE, OPTIONS";

3 Access-Control-Allow-Headers

Следующие заголовки находятся в безопасном списке, поэтому вам не нужно добавлять их. Они должно работать по умолчанию.
  • Content-Type
  • Accept
  • Content-Language
  • Accept-Language
Однако, если вам нужно добавить пользовательский вариант, вы можете сделать это. Поддерживает один или несколько заголовков.

Apache

Допустим, вы хотите разрешить заголовки X-Custom-Header и X-Powered-By.

Header always set Access-Control-Allow-Headers "X-Custom-Header, X-Powered-By"

Nginx

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

add_header Access-Control-Allow-Headers "X-Custom-Software, X-My-Custom";

4 Access-Control-Expose-Headers

Следующие заголовки уже находятся в безопасном списке. Значит, вам не нужно их добавлять.
  • Expires
  • Pragma
  • Cache-Control
  • Last-Modified
  • Content-Language
  • Content-Type
Но, если вам нужен не безопасный список, вы можете разрешить их следующим образом.

Apache

Используйте подстановочный знак, чтобы раскрыть все заголовки.

Header always set Access-Control-Expose-Headers "*"
Примечание: подстановочный знак все еще не предоставляет заголовок авторизации, и если он вам нужен, вам нужно упомянуть его явно.
Header always set Access-Control-Expose-Headers "Authorization, *"

Nginx

Если вы хотите выставить заголовок Origin.

add_header Access-Control-Expose-Headers "Origin";

5 Access-Control-Max-Age

Знаете ли вы, что данные из заголовков Access-Control-Allow-Headers и Access-Control-Allow-Methods можно кэшировать?

В Firefox его можно кэшировать до 24 часов, в Chrome — 2 часа (76+).

Чтобы отключить кеширование, вы можете оставить значение -1 

Apache

Кешировать на 15 минут.

Header always set Access-Control-Max-Age "900"

Как видите, значение в секундах.

Nginx

Кешировать на один час.

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

6 Access-Control-Allow-Credentials

Здесь есть только один вариант — true.

Это необходимо, если вы хотите предоставить такие учетные данные, как файлы cookie, сертификаты TLS, авторизацию.

Apache

Header always set Access-Control-Allow-Credentials "true"

Nginx

add_header Access-Control-Allow-Credentials "true";

Заключение

Я надеюсь, что вышеизложенное поможет вам реализовать заголовок CORS в Apache HTTP и веб-сервере Nginx для повышения безопасности.

 

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…