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

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


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

Могу ли я использовать Cors? Данные о поддержке функции Cors в основных браузерах от caniuse.com.

По умолчанию браузер ограничивает перекрестные HTTP-запросы через сценарии. А также, CORS может быть удобно использовать общие ресурсы приложений в других веб-приложениях. После того, как он добавлен правильно, он дает указание браузеру загрузить приложение из другого источника..

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

Access-Control-Allow-Origin

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

апаш

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

Набор заголовков Access-Control-Allow-Origin "*"

Перезапустите Apache для тестирования. Вы должны увидеть их в ответных заголовках.

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

Набор заголовков Access-Control-Allow-Origin "https://gf.dev"

Nginx

Вот пример, чтобы разрешить происхождение https://geekflare.dev. Добавьте следующее в блок сервера nginx.conf или в используемый файл конфигурации.

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

Access-Control-Allow-методы

Браузер может инициировать один или несколько методов HTTP для доступа к ресурсам. Пример: – ПОЛУЧИТЬ, ПОСТАВИТЬ, ОПЦИИ, ПОСТАВИТЬ, УДАЛИТЬ, ПОЧТУ

апаш

Разрешить только GET и только POST.

Заголовок добавляет Access-Control-Allow-Methods "ПОЛУЧИТЬ, ПОЧТА"

Nginx

Допустим, вам нужно добавить методы DELETE и OPTIONS, тогда вы можете добавить, как показано ниже.

add_header Access-Control-Allow-Methods "УДАЛИТЬ, ВАРИАНТЫ";

После перезагрузки вы должны увидеть их в заголовках ответов..

Access-Control-Allow-Headers

Следующие заголовки находятся в безопасном списке, поэтому вам не нужно добавлять его. Должно работать по умолчанию.

  • Тип содержимого
  • принимать
  • Content-Language
  • Accept-Language

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

апаш

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

Заголовок всегда установлен 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";

Access-Control-Expose-Headers

Следующие заголовки уже являются безопасным списком. Значит, вам не нужно добавлять, если вы хотите выставить их.

  • Истекает
  • Pragma
  • Cache-Control
  • Последнее изменение
  • Content-Language
  • Тип содержимого

Но если вам нужен не безопасный список, вы можете разрешить их следующим образом.

апаш

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

Заголовок всегда установлен Access-Control-Expose-Headers "*"

Примечание: подстановочный знак по-прежнему не отображает заголовок авторизации, и если он вам нужен, вам нужно явно указать.

Заголовок всегда установлен Access-Control-Expose-Headers "Авторизация *"

Результат должен выглядеть так.

Nginx

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

add_header Access-Control-Expose-Headers "происхождения";

Access-Control-Max-Age

Знаете ли вы, что данные из заголовков Access-Control-Allow-Headers и Access-Control-Allow-Methods можно кэшировать? Он может кэшироваться до 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. Это позволяет, если вы хотите выставить учетные данные, такие как куки, сертификаты TLS, авторизация.

апаш

Заголовок всегда устанавливает Access-Control-Allow-Credentials "правда"

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