У меня есть веб-сайт, который поддерживает HTTPS: все страницы формы http://example.com/foo можно получить как https://example.com/foo (запрос вернет то же содержание). Тем не менее, веб-сайт не содержит ничего конфиденциального, поэтому использование HTTPS не дает больших преимуществ.
Я хотел бы прорекламировать существование HTTPS-версии веб-сайта, но я не хочу заставлять людей использовать ее: некоторые старые клиенты могут не поддерживать ее, некоторые опытные пользователи могут предпочесть ее не использовать и т. Д. причина, по которой я не хочу, чтобы сервер отвечал на незашифрованные HTTP-запросы перенаправлением. Тем не менее, для пользователей, которые предпочитают использовать HTTPS, должен быть способ узнать, что HTTPS поддерживается. (Веб-браузеры не берут на себя инициативу по обновлению HTTP-соединений до HTTPS, например, потому что некоторые веб-сайты не обслуживают тот же контент по HTTPS, как по HTTP.)
Есть ли способ для веб-сервера объявить, что поддерживается HTTPS (т.е. любой запрос может быть выполнен с использованием HTTPS вместо HTTP), не требуя от клиентов использования HTTPS?
Единственный подходящий механизм, который я нашел, - это заголовок Upgrade: TLS/1.0
из RFC2817, который, очевидно, может быть отправлен как сервером, так и клиентом. Но мне не кажется очевидным, широко ли это используется или поддерживается веб-браузерами.
Следующее не является специфическим для HTTPS, но может использоваться для мягкого переключения клиентов на HTTPS.
Если вы предоставляете один и тот же контент по более чем одному URL-адресу (что имеет место, если вы разрешаете HTTP и HTTPS), вам следует добавить канонический тег к контенту, который вы обслуживаете. Этот канонический тег затем определяет предпочтительный способ доступа к контенту.
Давайте представим, что у вас есть «example.com», и разместим для этого веб-сайт. Этот сайт доступен как по HTTP, так и по HTTPS, как «example.com», так и «www.example.com», а домашняя страница доступна в «/» и «/default.html» (по каким-либо историческим причинам). Таким образом, доступ к домашней странице можно получить, используя
Затем вы решаете, что по умолчанию все должны использовать https://www.example.com/default.html для доступа к домашней странице вашего сайта, но вы не хотите добавлять перенаправления.
Вы можете добавить следующий тег на свою домашнюю страницу <head>
раздел
<link rel="canonical" href="https://www.example.com/default.html" />
Это сообщит каждому веб-сканеру (например, Google) и браузеру, что просматриваемый им контент доступен по этому URL-адресу. Затем клиентское программное обеспечение само может решить, что делать с этой информацией.
Обратной стороной является то, что вам придется добавить такой тег в каждый HTML-документ, который вы обслуживаете, и что он работает только для HTML.