Веб-сайт HSTS Preload List Submission имеет очень специфические предварительные условия, запрещающие объединение изменений протокола и перенаправления в один шаг (классический пример - перенаправление запросов для http://example.com
напрямую на https://www.example.com
не прошел тест - сначала должно произойти обновление протокола до HTTPS, затем субдомен www может быть добавлен на дискретном этапе). Можно ли выполнить эти правила для сайтов, размещенных на Amazon CloudFront?
Здесь есть связанный с вопрос об отправке необходимых заголовков , но эта часть у меня уже протестирована и работает . Моя проблема заключается в перенаправлении для сайта, который использует субдомен www.
У меня CloudFront настроен на «Перенаправление HTTP на HTTPS» в соответствии с поведением по умолчанию и отлично работает для всех HTTP-запросов, однако запросы к https://example.com
сначала перенаправляют на протокол с пониженной версией http://www.example.com
перед обновлением до HTTPS, и здесь я застрял. Мне нужно по-разному обрабатывать запросы HTTP и HTTPS для домена второго уровня.
Для ясности, вот шаблон перенаправления, который я хочу достичь:
http://example.com > https://example.com > https://www.example.com
http://www.example.com > https://www.example.com
https://example.com > https://www.example.com
https://www.example.com
И вот что CloudFront делает сейчас с третьей строкой (протокол понижение версии ), приводящее к ошибке отправки предварительной загрузки HSTS:
http://example.com > https://example.com > https://www.example.com
http://www.example.com > https://www.example.com
https://example.com > http://www.example.com > https://www.example.com
https://www.example.com
Я подозреваю, что вы, возможно, упустили из виду необходимость очистки кэша CloudFront после изменения целевого протокола перенаправления на https, потому что описанная конфигурация (в комментариях) должна работать, как и ожидалось -- установка "протокола" на "https" в конфигурации перенаправления должна а не делать это:
https://example.com > http://www.example.com > https://www.example.com
Создайте запрос на аннулирование CloudFront, используя шаблон /*
. После завершения запроса об устранении недействительности, как показано в консоли, выполните повторную проверку. Если вы все еще видите неожиданное поведение, пожалуйста, запишите заголовки ответа и отредактируйте их в вопросе.