Ограничьте или разрешите совместное использование ресурсов между сайтами, используя заголовок 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 для повышения безопасности.
0 Комментарии