Ограничьте или разрешите совместное использование ресурсов между сайтами, используя заголовок 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 "*"
Header set Access-Control-Allow-Origin "https://gf.dev"
Nginx
add_header Access-Control-Allow-Origin "https://itisgood.ru";
2 Access-Control-Allow-Methods
Браузер может инициировать один или несколько методов HTTP для доступа к ресурсам.
Пример: – GET, PUT, OPTIONS, PUT, DELETE, POST
Apache
Header add Access-Control-Allow-Methods "GET, POST"
Nginx
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 для повышения безопасности.