Ошибками в протоколе HTTP называется такое поведение веб-сервера, когда он по какой-то причине не может успешно отправить клиенту запрашиваемый документ. Код ошибки сервер сообщает клиенту в HTTP-заголовке.
Каждая ошибка, выдаваемая веб-сервером, имеет код соответствующий классу возникшей ошибки. Коды ошибок (например 403 или 404) стандартизованы и подробно описаны в интернет-стандарте RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1). Вы можете обращаться к этому документу за подробным описанием конкретной ошибки как к первоисточнику.
Пример веб-запроса, выполненного вручную с помощью программы telnet:
# telnet www.
avahost
.ru 80
Trying 217.16.20.20...
Connected to www.avahost
.ru.
HEAD / HTTP/1.1
Host: www.avahost
.ru
HTTP/1.1 200 OK
Date: Mon, 29 Mar 2004 08:24:07 GMT
Server: CoffeeMaker/1.12 (Unix) mod_ssl/2.8 OpenSSL/0.9
Сервер выдал успешный код ошибки 200 (OK). Это был пример правильного запроса к существующему на сервере документу, который завершился удачно. В случае, если бы запрашиваемого документа на сервере не было, сервер повел бы себя иначе и выдал бы ошибку 404 (документ не найден):
# telnet www.avahost.ru 80
Trying 217.16.20.20...
Connected to www.avahost
.ru.
HEAD /abcdef HTTP/1.1
Host: www.avahost
.ru
HTTP/1.1 404 Not Found
Date: Mon, 29 Mar 2004 08:42:01 GMT
Server: CoffeeMaker/1.12 (Unix) mod_ssl/2.8 OpenSSL/0.9
Коды ошибок бывают положительными и отрицательными или успешными и неуспешными. Есть четыре типа кодов:
- 2xx — запрос выполнен успешно — сервер успешно отправил клиенту запрашиваемый документ
- 3xx — запрос успешно перенаправлен — тоже положительный код. Он говорит о том, что запрос клиента был перенаправлен. Используется при работе с кэширующими серверами, а также в алгоритме, когда браузер клиента проверяет актуальность документа на сервере (дату создания, размер и так далее)
- 4xx — ошибка — документ не был отправлен клиенту, так как произошла критическая ошибка. Например, запрошенный документ не найден на сервере, доступ к документу запрещен и так далее
- 5xx — ошибка сервера — критическая ошибка на сервере. Например, на сервере не смог нормально отработать скрипт пользователя