Заголовок сообщения: Ошибка 404 и обработка других HTTP-кодов. Добавлено: 9 Ноябрь 2002, 04:20:00
Возникло у меня пара вопросов на тему обработки ответов сервера на запросы клиента.
Часть первая. Идеологическая.
Вопрос, собственно, очень простой. Кто какие ошибки обрабатывает и какие ошибки в природе встречаются. Спецефикации кодов статуса HTTP 1.1 выдают кучу разных кодов, из которых группы 1** и 2** нам не интересны (хотя было бы забавно встретить сайт, который при загрузке каждой страницы радостно сообщал нас, что соединение с сервером произошло успшно [img]images/smiles/icon_smile.gif[/img]), а в остальных группах у нас появляется селективный интерес. Самые очевидные коды (которые обрабатываются при помощи моих страниц) -- это, разумеется, 403, 404 и 500. На моей практике я могу по пальцам пересчитать, когда я встречал ошибку, попадающую в классификацию под один из других значений. Пройдёмся по группам и интересующим меня кодам:
Группа 3** (Редирект).
300 (Multiple Choices). По описанию, этот код отрабатывается сервером, когда запрошенный ресурс находится в нескольких местах одновременно (?) и клиенту предлагается выбор между этими локациями (?). Бред какой-то. А в реальной жизни это можно вообще использовать и если да, то зачем?
301 (Moved Permanently) и 302 (Moved Temporarily). Это логичнее, но не ясно, как просходит индексация всех перемещённых страниц (а если их тысячи?), и не проще ли оставить отработку ошибки 404, что и происходит в большинстве случаев?
Группа 4** (Ошибки клиента).
400 (Bad Request). Как говорится в описании, этот код обрабатывается при неправильном синтаксисе запроса. Это относится к обработке скриптов или же есть ещё какие-то виды синтаксических ошибок?
401 (Unauthorized). А каков механизм обработки этого запроса и даётся ли ответ сервера в виде отдельной страницы так же как и обработка, скажем 404й ошибки?
403 и 404. No comments.
409 (Conflict). А есть какая-нибудь практическая необходимость обработки этого кода?
Группа 5** (Ошибки сервера).
500. No comments.
501 (Not Implemented). Каким макаром обычный пользователь может заказать у сервера что-то чего на этом сервере нету? А если речь идёт о скрипте, то обычно при подобных ошибках отрабатывается код 500, мне кажется.
503 (Service Unavailable). Два варианта развития событий: сервер проходит техническое обслуживание или же сервер попросту перегружен. Если мы говорим о виртуальном хостинге и провайдер проводит профилактику на сервере, то при обращении по адресу моего сайта, загрузится моя страница об этой ошибке или страница хостера? Плюс, в той же спецификации специально отмечено, что некоторые сервера даже не отрабатывают этот код, а попросту отказывают в соединении. Как узнать, что будет делать твой конкретный хост и от чего это вообще зависит?
Часть вторая. Техническая.
Применяя эти страницы, я обнаруживаю у себя следующую неюзабельность -- скажем, при обработке ошибки 404, браузер загржуает соответствующую страницу, но адрес указывается именно этой страницы, а не тот URL, который привёл к ошибке. И, разумеется, я знаю, что это решаемо. Другое дело, что я не знаю как. В общем, подскажите способ поизящней, как при обработке этих кодов, сохранять первоначальный адрес в соответствующем элементе интерфейса пользовательского клиента.
0 Сообщения: 175 Зарегистрирован: 22.07.02 Откуда: Москва
Заголовок сообщения: Ошибка 404 и обработка других HTTP-кодов. Добавлено: 9 Ноябрь 2002, 13:37:00
300 - http://www.w3.org/Protocols/HTTP/1.1/spec.html#Content-Negotiation 301/302 в серверах практически не используются, никакой "индексации" не существует. Применяются сервером для редиректа при запросе http://server/dir на http://server/dir/, а также в скриптах. Обычно клиентский браузер страницу "ошибки" не отображает. 400 - ошибка при передаче клиентом заголовков HTTP. 401 - ошибка авторизации. Когда нажимается кнопка "отмена" в окне HTTP-авторизации и т.п. Можно переназначить. 409 - в веб-серверах фактически не применяется. HTTP-протокол поддерживает не только методы GET и POST. 501 - ни чего нету, а неподдерживаемым способом. Т.е. сервер не хочет обрабатывать запрос специфического типа (тот-же PUT) или этот тип ему не известен. 503 - от настроек сервера. Нагружать сервер обработкой ошибки перегрузки по меньшей мере нелогично.
По второй части: в .htaccess надо писать не ErrorDocument 404 http://server/404.html , а ErrorDocument 404 /404.html
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.