В Веб-сайт для подачи списка предварительной загрузки HSTS имеет очень специфические предпосылки, которые запрещают объединение изменений протокола и перенаправления в один шаг (классический пример - перенаправление запросов для 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 используя шаблон /*
. Как только запрос invalidarion будет завершен, как показано в консоли, повторите попытку. Если вы по-прежнему видите непредвиденное поведение, запишите заголовки ответов и отредактируйте их в вопросе.