Назад | Перейти на главную страницу

Включена ли переменная% {HTTPS} всякий раз, когда в URL указан https?

В руководстве по 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).