Насколько хорошо поддерживается механизм обновления HTTP? - PullRequest
10 голосов
/ 05 ноября 2010

Я изучал поле заголовка Upgrade в HTTP 1.1 (RFC 2817) и случайно прочитал запись в Википедии для HTTP. Эта статья имеет следующее утверждение:

"Однако поддержка заголовка Upgrade в браузере практически отсутствует, поэтому HTTPS по-прежнему является доминирующим методом установления безопасного HTTP-соединения."

Я надеялся реализовать свой веб-сервис таким образом, чтобы он опирался на поле заголовка Upgrade, чтобы избежать необходимости прослушивать два сокета (один для HTTP и другой для HTTPS). Это утверждение, которое я не смог проверить ни в одном другом месте, заставляет меня несколько нервничать по этому поводу. Вышеупомянутое утверждение в википедии почти правильное или это грубое обобщение?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2013

Я исследовал это для той страницы Википедии и наткнулся на этот вопрос. Я посмотрел вокруг и вот ситуация с поддержкой браузера, насколько я могу судить:

  • Chromium поддерживает заголовок обновления, как указано, например, этой ошибкой .
  • Firefox не поддерживает «Обновление: TLS», несмотря на открытую ошибку 2005 года , последний комментарий 2010 года. Думаю, они не добавят его в ближайшее время.
  • Internet Explorer 10+, вероятно, делает, учитывая эту статью , которая описывает использование Upgrade для подключения к серверу веб-сокетов. Это сообщение о фиксации также подразумевает, что IE 10 поддерживает "Upgrade: websocket".
  • Safari 6+ поддерживает обновление (см. здесь ).

Для всех поддерживаемых браузеров я нашел только примеры использования «Upgrade: websocket», ни один из которых не говорил, что обновление до TLS будет работать. Таким образом, общий ответ таков: полагаться на это в производственном приложении рискованно.

Поддержка сервера кажется лучше; Apache поддерживает "Upgrade: TLS" с 2.1.

0 голосов
/ 26 сентября 2011

Я бы хотел, чтобы все это было в http, но текущая ситуация больше опирается на индикацию имени сервера, поскольку она широко поддерживается. Также трудно указать, что вы хотите, чтобы клиент обновлялся с помощью URL. Таким образом, если целью является виртуальный хостинг, один из способов сделать это - TLS «указание имени сервера». См. RFC 3546 http://www.ietf.org/rfc/rfc3546.txt или http://en.wikipedia.org/wiki/Server_Name_Indication

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...