В руководстве по HTTP-серверу Apache упоминается
Будет содержать текст «on», если соединение использует SSL / TLS.
Означает ли это, что он включен ТОЛЬКО, когда соединение SSL / TLS полностью установлено с успешным подтверждением связи? Или это означает, что он включен, пока запрашивающая сторона указывает «https» в URL-адресе и инициирует соединение SSL / TLS?
Потому что у меня много VH (некоторые http, некоторые https), и я хочу сэкономить усилия, поставив условную проверку снаружи и перед всеми VH, используя% {HTTPS} для добавления заголовка ответа Strict Transport Security. Интересно, если запрашивающая сторона указала «https» в URL-адресе VH, который не поддерживает https, будет ли при условной проверке добавляться заголовок Strict Transport Security в ответ об ошибке.
Интересно, если запрашивающая сторона указала «https» в URL-адресе VH, который не поддерживает https, будет ли при условной проверке добавляться заголовок Strict Transport Security в ответ об ошибке.
Если виртуальный хост не поддерживает HTTPS, соединение не будет установлено, и браузер не получит ответа HTTP, поэтому не сможет получить обратно какие-либо заголовки HTTP.
Так что да, вы можете безопасно добавлять HSTS на основе этой переменной HTTPS.
Или, если все еще беспокоитесь, просто добавьте его в конфигурацию виртуального хоста HTTPS, а не в конфигурацию верхнего уровня. Это мой предпочтительный вариант, поскольку позволяет использовать разные заголовки HSTS для каждого виртуального хоста (например, если вы не готовы использовать includeSubDomain
атрибут в домене верхнего уровня из-за того, что некоторые поддомены еще не доступны по HTTPS).