В последнее время встречаю на форуме много вопросов по ошибкам серверов. Вот самые распространенные ошибки и причины их вознинкновения:
Неполные запросы клиента
Коды ответов в диапазоне 400-499 означают, что запрос клиента неполный. Эти коды могут также означать, что от клиента требуется дополнительная информация.
400 - Bad Request (некорректный запрос) - запрос не может быть понят сервером из-за malformed синтаксиса. Клиенту не следует повторять запрос без модификаций.
401 Unauthorized (нет разрешения) - запрос требует установления подлинности пользователя. Ответ должен включать поле заголовка WWW-Authenticate, содержащее вызов (challenge), применимый к запрошенному ресурсу. Клиент может повторить запрос с подходящим полем заголовка Authorization. Если запрос уже включает рекомендации установления подлинности (Authorization credentials) в поле Authorization, то ответ с кодом состояния 401 указывает, что в установлении подлинности этим рекомендациям отказано. Если ответ с кодом состояния 401 содержит тот же самый вызов, что и предшествующий ответ, а агент пользователя уже делал попытку установления подлинности по крайней мере один раз, то следует показать пользователю объект, который был дан в ответе, так как этот объект может включать relevant диагностическую информацию.
402 Payment Required (требуется оплата) - Этот код зарезервирован для будущего использования. В данный момент в HTTP еще не реализован.
403 Forbidden (доступ запрещен) - запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту.
404 Not Found (ресурс не найден) - документ по указанному URL не существует, сервер не нашел ничего, соответствующего данному запрашиваемому URI (Request-URI). Никак не сообщается является ли такое положение временным или постоянным. Если сервер не желает делать данную информацию доступной клиенту, то вместо этого кода состояния может использоваться код состояния 403 (Запрещено, Forbidden). Код состояния 410 (Удален, Gone) следует использовать, если сервер знает через некоторый внутренне конфигурируемый механизм, что старый ресурс более недоступен, но не знает нового адреса для пересылки.
405 Method Not Allowed (недопустимый метод) - этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URL не поддерживается.
406 Not Acceptable (неприемлемый запрос) - ресурс, идентифицируемый запросом, имеет возможности генерации только таких объектов ответа, которые имеют характеристики содержимого (content characteristics), не согласующиеся с заголовками приема (accept headers), представленными в запросе.
407 Proxy Authentication Required (необходима регистрация на сервере-представителе) - этот код подобен коду 401 (Несанкционированно, Unauthorized), но указывает, что клиент должен сначала установить свою подлинность (authenticate) прокси-серверу. Прокси-сервер должен возвратить поле заголовка Proxy-Authenticate, содержащее вызов (challenge), применяемый прокси-сервером для запрошенного ресурса. Клиент может повторить запрос с подходящим полем заголовка Proxy-Authorization.
408 Request Timeout (время обработки запроса истекло) - клиент не произвел запрос в течение времени, которое сервер готов ждать. Клиент может повторить запрос без модификаций позже.
409 Conflict (конфликт) - запрос не был выполнен из-за конфликта с текущим состоянием ресурса. Этот код позволяется только в ситуациях, когда ожидается, что пользователь может решить конфликт и повторно передать запрос. Телу ответа следует содержать достаточное количество информации для пользователя, чтобы он мог распознать источник конфликта. В идеале, объект ответа должен включать достаточно информации для пользователя или агента пользователя для решения проблемы; однако это может не быть возможно, да и не требуется. Конфликты, наиболее вероятно, будут возникать в ответ на запрос PUT. Если используется версификация, и объект, который должен быть помещен, включает изменения ресурса, которые находятся в противоречии со сделанными раньше каким-либо запросом (третьей стороны), сервер может использовать ответ с кодом состояния 409, чтобы показать, что он не может выполнить запрос. В этом случае, объекту ответа следует содержать список отличий двух версий в формате, определенном полем заголовка ответа Content-Type.
410 Gone (ресурса больше нет) - данный код показывает, что затребованный URL больше не существует и навсегда удален с сервера.
411 Length Required (необходимо указать длину) - сервер отказывается принимать запрос с неопределенным Content-Length. Клиент может повторить запрос, если добавит допустимое поле заголовка Content-Length, содержащее длину тела сообщения (message-body) в сообщении запроса.
412 Precondition Failed (не выполнено предварительное условие) - сервер отказывается обрабатывать запрос, потому что объект запроса больше, чем сервер желает или способен обработать. Сервер может закрыть соединение, чтобы не дать клиенту возможность продолжить запрос. Если это временное состояние, то серверу СЛЕДУЕТ включить поле заголовка Retry-After для указания времени, через которое клиент может снова повторить запрос.
413 Request Entity Too Large (запрашиваемый элемент слишком велик) - сервер не будет обрабатывать запрос, потому что его тело слишком велико.
414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный) - сервер не будет обрабатывать запрос, потому что его URL слишком длинный.
415 Unsupported Media Type (неподдерживаемый тип устройства) - сервер отказывается обслуживать запрос, потому что объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода.
Ошибки сервера
Коды ответов в диапазоне 500-599 показывают, что сервер столкнулся с ошибкой и, вероятно, не сможет выполнить запрос клиента.
500 Internal Server Error (внутренняя ошибка сервера) - при обработке запроса на сервере один из его компонентов (например, CGI-программа) выдал аварийный отказ или столкнулся с ошибкой конфигурации.
501 Not Implemented (функция не реализована) - клиент запросил выполнение действия, которое сервер выполнить не может, сервер не поддерживает функциональные возможности, требуемые для выполнения запроса. Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечитиь его для любого ресурса.
502 Bad Gateway (дефект шлюза) - сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос.
503 Service Unavailable (служба недоступна) - данный код означает, что данная служба временно недоступна, но в будущем доступ к ней будет восстановлен. Если сервер знает, когда это произойдет, может быть также выдан заголовок Retry-After.
504 Gateway Timeout (время прохождения через шлюз истекло) - этот ответ похож на 408 (Request Time-out) , за исключением того, что шлюз или уполномоченный сервер превысил лимит времени.
505 HTTP Version Not Supported (неподдерживаемая версия HTTP) - сервер не поддерживает версию протокола HTTP, использованную в запросе.