Когда появляется стандартная страница 404? - PullRequest
3 голосов
/ 16 октября 2008

Я строю простой HTTP-сервер для проекта. Большинство веб-сайтов имеют собственные страницы ошибок 404. Иногда, однако, вы увидите, что Firefox плюет на общую страницу 404 (или 405 и т. Д.). Как он решает, что делать? Каким должен быть HTTP-ответ? Достаточно ли «HTTP / 1.0 404 NOT FOUND»?

Спасибо

Ответы [ 5 ]

4 голосов
/ 16 октября 2008

Если сервер не может найти запрошенный ресурс (например, веб-страницу), он отправляет HTTP / 1.0 404 NOT FOUND в разделе заголовка HTTP.

Серверы могут отобразить страницу ошибки для этой ошибки, так что вы можете получить читаемую страницу ошибки. Браузеры также могут отображать собственную страницу ошибки, поэтому вы можете увидеть сообщение об ошибке 404 для браузера.

Вы можете увидеть код ошибки в поле состояния в файлах журнала .

Вы можете перенаправить пользователя на определенную страницу с такой структурой:

<HTML>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="5; URL=not404.htm">
</head>
</HTML>

Подробнее см. Добро пожаловать на страницу ошибок 404 .com

2 голосов
/ 16 октября 2008

Вполне допустимо возвращать HTML-тело с кодом ответа 404. Если тело не указано, браузер покажет страницу по умолчанию.

  1. Если вы отправляете только HTTP / 1.0 404 NOT FOUND , будет отображаться браузер по умолчанию.
  2. Если вы добавите тело к ответу, браузер будет использовать его в основном.
2 голосов
/ 16 октября 2008

Если вы создаете HTTP-сервер, вы можете посмотреть RFC, описывающий протокол: http://www.faqs.org/rfcs/rfc2616.html

Для кода состояния 404 написано:

Сервер ничего не нашел соответствие Request-URI. Нет
указывается, является ли состояние временное или
постоянны. Код состояния 410 (Gone) СЛЕДУЕТ использовать, если сервер знает, через некоторые внутренне настраиваемые механизм, что старый ресурс постоянно недоступен и не имеет адрес переадресации. Этот статус код обычно используется, когда сервер не хочет раскрывать, почему именно запрос был отклонен, или когда другие ответы не применимы.

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

Тем не менее, вы можете воспользоваться одним из существующих HTTP-серверов. Посмотрите на этот вопрос о том, как создать HTTP-сервер на C или C ++, опубликованный несколько дней назад,

1 голос
/ 16 октября 2008

Итак, Firefox не будет отображать страницу с общей ошибкой 404 в большинстве случаев; Вы думаете об Internet Explorer, который игнорирует страницу 404 веб-сайта, если она меньше определенного размера, и отображает свою собственную.

0 голосов
/ 16 октября 2008

Обычно это настраивается в веб-сервере, то есть: когда сервер получает 404, обратитесь к этой странице.

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