Какой http-заголовок следует использовать, если сервер не принимает запрос на обновление?

#http #http-headers

#http #http-заголовки

Вопрос:

Если клиент хочет согласовать изменение протокола, он делает это через upgrade http-заголовок, возможно, вот так:

 Upgrade:  TLS/1.0
  

Если сервер готов к обновлению, он отвечает с 101 status code и upgrade заголовком, возможно, примерно так:

 HTTP/1.1 101 Switching Protocols
Upgrade:  TLS/1.0, HTTP/1.1
  

Но что, если сервер не желает или не может выполнить обновление? Каким кодом состояния он отвечает? И какие заголовки он отправляет?

Ответ №1:

Он игнорирует запрос на обновление и отвечает так, как если бы Upgrade поле отсутствовало в запросе, поэтому запрошенный ресурс возвращается.

Комментарии:

1. Это то, что говорится в спецификации, что обычно делают браузеры или что?

2. @james.garriss это то, что говорится в спецификации и что делают соответствующие серверы. Не уверен, почему браузеры здесь уместны, поскольку речь идет о поведении сервера.

3. Я нашел другой документ, RFC 2817, который более понятен. В нем говорится (в 3.1): «В этом случае сервер МОЖЕТ нормально реагировать на операцию очистки HTTP или переключаться на защищенную операцию». ietf.org/rfc/rfc2817.txt Но эта спецификация касается обновления до TLS, поэтому я не уверен, применимо ли это ко всем обновлениям.

4. Сервер либо обновляется, и сообщает об этом в сообщении 101, либо нет. Если это не так, он отвечает на запрос как есть. Я думаю, это довольно ясно.

5. Подумайте об этом так: клиент может разговаривать с сервером HTTP 1.0, который вообще не знает об обновлении и, следовательно, игнорирует поле. Поскольку спецификация, безусловно, не объявляет все старые серверы несоответствующими, разрешается игнорировать запросы на обновление.