404 заголовка - HTTP 1.0 или 1.1?

Почему делает почти каждый пример, который я могу найти (включая этот вопрос от приблизительно год назад), говорят, что 404 заголовка должны быть HTTP/1.0 404 Not Found когда мы действительно использовали HTTP 1.1 больше десятилетия? Есть ли любая причина не отправить HTTP/1.1 404 Not Found вместо этого?

(Не то, чтобы это имеет значение все так очень... Мне главным образом просто любопытно.)

20
задан Community 23 May 2017 в 10:28
поделиться

4 ответа

Использование версии HTTP может зависеть от следующих факторов:

  • Ваш веб-сервер поддерживает HTTP 1.0 или 1.1
  • Поддержка веб-браузером для HTTP 1.0 или 1.1
  • Как веб-разработчик вы предпочитаете, какую версию протокола использовать.

Современные браузеры могут хорошо поддерживать как 1.0, так и 1.1, и и клиент, и сервер согласятся на самую высокую версию, которую они могут поддерживать вместе. Ключевые различия между двумя протоколами можно найти: http://www8.org/w8-papers/5c-protocols/key/key.html

Однако нет никаких ключевых различий в использовании 404 Not Found . Однако будьте последовательны для всего вашего сайта. т.е. если вы используете HTTP / 1.1, вы используете его на всем своем веб-сайте.

6
ответ дан 29 November 2019 в 23:57
поделиться

Я бы подумал, что ответ должен быть HTTP / 1.0 404 Not Found , если запрос был HTTP 1.0, и HTTP / 1.1 404 Not Found , если запрос был HTTP 1.1.

На практике серверам будет проще возвращать стандартные ответы, а ответ HTTP 1.0 будет понят как клиентам 1.0, так и 1.1, поэтому безопаснее всего возвращать его. Если вы знаете, что клиент понимает 1.1 (например, потому что это то, о чем он просил), то ответ 1.1 должен работать.

Возможно, перестрахуйтесь и отправьте ответ 1.0.

2
ответ дан 29 November 2019 в 23:57
поделиться

Это не имеет особого значения. Клиент отвечает за сообщение серверу, какую версию HTTP он использует. Затем предполагается, что сервер ответит той же версией. Так бывает не всегда; Я только что получил ответ от сервера:

$ telnet example.com 80
Trying 123.123.123.123...
Connected to example.com.
Escape character is '^]'.
GET /fork HTTP/1.0

HTTP/1.1 404 Not Found
Content-Length: 1635
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Tue, 04 May 2010 22:30:36 GMT
Connection: close

Я попросил сервер использовать HTTP 1.0, но он пошел дальше и ответил HTTP 1.1.

2
ответ дан 29 November 2019 в 23:57
поделиться

Если посмотреть на RFC 1.1 и 1.0, то 404 присутствует в обоих - так что, вероятно, только для того, чтобы сервер сообщил клиенту, что он работает на http 1.1.

Тем не менее, если сервер отвечает 404 через Http 1.1, это означает, что он мог вернуть 410 - Gone вместо этого, чтобы указать ресурс, который раньше существовал, но больше не существует. Этот код состояния не является частью 1.0, и поэтому эта информация может быть полезной для клиента (особенно для поисковых роботов).

РЕДАКТИРОВАТЬ

Извините - этот ответ, вероятно, отвечает наоборот! Я полагаю, вы, вероятно, можете рассчитывать только на несколько человек из числа общедоступных веб-серверов, которые будут беспокоиться о том, чтобы запомнить все ресурсы, которые раньше существовали и которых больше нет (я бы ни в коем случае не закодировал это на своем веб-сервере!) - поэтому, вероятно, лучше всего ответить 1.0 404, чтобы указать, что `` его просто нет '', а не `` этого нет, но другие вещи на сайте могли быть раньше, но больше не будут - в этом случае я мог бы отправить вам 410 '.

Также вы разрешаете клиентам версии 1.0 работать с вашим сайтом.

Впрочем, все это немного педантично.

1
ответ дан 29 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: