Содержание
- 401 Unauthorized error when using Apache 2.4
- Ошибка сервера 401: что это за ошибка и как ее исправить
- Причины появления ошибки сервера 401 и способы ее устранения на стороне пользователя
- Устранение ошибки 401 администратором веб-ресурса
- Дополнительная информация об ошибке с кодом 401
- HTTP Status Codes and Htaccess ErrorDocuments
- 57 APACHE HTTP STATUS RESPONSE CODES
- 1xx Info / Informational
- 2xx Success / OK
- 3xx Redirect
- 4xx Client Error
- 5xx Server Error
- Quick Start to triggering ErrorDocuments for each Status Code
- Automate the ErrorDocument Triggering
- The htaccess Redirects
- PHP script that gets and outputs the Headers/Content
I currently have an application proxied through 2 separate web servers. One web server is running Apache 2.2 while the other web server is running Apache 2.4. While some of the configuration had to be changed to accommodate Apache 2.4, the configuration between these 2 web servers is essentially the same (we were upgrading web servers).
This application works fine when proxied through Apache 2.2, however when accessing the application through Apache 2.4 I run into an issue.
The application that I am accessing is constantly polling for data by sending out successive AJAX requests. After a certain amount of time/requests (does not seem to be consistent), the Apache 2.4 web server returns a 401 Unauthorized error causing the application to fail. Keep in mind that it works without issue for a period of time however the 401 error always presents itself within a couple of minutes.
When accessing the application via an internal IP or through the Apache 2.2 web server, I do not encounter this issue which leads me to believe Apache 2.4 is causing the issue. Something to do with the successive requests within a short period of time?
Is there a configuration setting that I need to include in Apache 2.4 in order for things to work properly? I am at a loss as to why the 401 error does not present itself initially (everything works fine initially), but does so after a short period of time.
Please let me know if you need any further information. I can provide any .conf files that are necessary. Your help is greatly appreciated.
EDIT: Apache 2.4 ‘apache2.conf’ file (comments removed):
Источник
Ошибка сервера 401: что это за ошибка и как ее исправить
Появление сообщения об ошибке 401 Unauthorized Error («отказ в доступе») при открытии страницы сайта означает неверную авторизацию или аутентификацию пользователя на стороне сервера при обращении к определенному url-адресу. Чаще всего она возникает при ошибочном вводе имени и/или пароля посетителем ресурса при входе в свой аккаунт. Другой причиной являются неправильные настройки, допущенные при администрировании web-ресурса. Данная ошибка отображается в браузере в виде отдельной страницы с соответствующим описанием. Некоторые разработчики интернет-ресурсов, в особенности крупных порталов, вводят собственную дополнительную кодировку данного сбоя:
- 401 Unauthorized;
- Authorization Required;
- HTTP Error 401 – Ошибка авторизации.
Попробуем разобраться с наиболее распространенными причинами возникновения данной ошибки кода HTTP-соединения и обсудим способы их решения.
Причины появления ошибки сервера 401 и способы ее устранения на стороне пользователя
При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:
- Идентификация – получение вашей учетной записи («identity») по username/login или email.
- Аутентификация («authentic») – проверка того, что вы знаете пароль от этой учетной записи.
- Авторизация – проверка вашей роли (статуса) в системе и решение о предоставлении доступа к запрошенной странице или ресурсу на определенных условиях.
Большинство пользователей сохраняют свои данные по умолчанию в истории браузеров, что позволяет быстро идентифицироваться на наиболее часто посещаемых страницах и синхронизировать настройки между устройствами. Данный способ удобен для серфинга в интернете, но может привести к проблемам с безопасностью доступа к конфиденциальной информации. При наличии большого количества авторизованных регистрационных данных к различным сайтам используйте надежный мастер-пароль, который закрывает доступ к сохраненной в браузере информации.
Наиболее распространенной причиной появления ошибки с кодом 401 для рядового пользователя является ввод неверных данных при посещении определенного ресурса. В этом и других случаях нужно попробовать сделать следующее:
- Проверьте в адресной строке правильность написания URL. Особенно это касается перехода на подстраницы сайта, требующие авторизации. Введите правильный адрес. Если переход на страницу осуществлялся после входа в аккаунт, разлогинитесь, вернитесь на главную страницу и произведите повторный вход с правильными учетными данными.
- При осуществлении входа с сохраненными данными пользователя и появлении ошибки сервера 401 проверьте их корректность в соответствующих настройках данного браузера. Возможно, авторизационные данные были вами изменены в другом браузере. Также можно очистить кэш, удалить cookies и повторить попытку входа. При удалении истории браузера или очистке кэша потребуется ручное введение логина и пароля для получения доступа. Если вы не помните пароль, пройдите процедуру восстановления, следуя инструкциям.
- Если вы считаете, что вводите правильные регистрационные данные, но не можете получить доступ к сайту, обратитесь к администратору ресурса. В этом случае лучше всего сделать скриншот проблемной страницы.
- Иногда блокировка происходит на стороне провайдера, что тоже приводит к отказу в доступе и появлению сообщения с кодировкой 401. Для проверки можно попробовать авторизоваться на том же ресурсе с альтернативного ip-адреса (например, используя VPN). При подтверждении блокировки трафика свяжитесь с провайдером и следуйте его инструкциям.
Некоторые крупные интернет-ресурсы с большим количеством подписчиков используют дополнительные настройки для обеспечения безопасности доступа. К примеру, ваш аккаунт может быть заблокирован при многократных попытках неудачной авторизации. Слишком частые попытки законнектиться могут быть восприняты как действия бота. В этом случае вы увидите соответствующее сообщение, но можете быть просто переадресованы на страницу с кодом 401. Свяжитесь с администратором сайта и решите проблему.
Иногда простая перезагрузка проблемной страницы, выход из текущей сессии или использование другого веб-браузера полностью решают проблему с 401 ошибкой авторизации.
Устранение ошибки 401 администратором веб-ресурса
Для владельцев сайтов, столкнувшихся с появлением ошибки отказа доступа 401, решить ее порою намного сложнее, чем обычному посетителю ресурса. Есть несколько рекомендаций, которые помогут в этом:
- Обращение в службу поддержки хостинга сайта. Как и в случае возникновения проблем с провайдером, лучше всего подробно описать последовательность действий, приведших к появлению ошибки 401, приложить скриншот.
- При отсутствии проблем на стороне хостинг-провайдера можно внести следующие изменения в настройки сайта с помощью строки Disallow:/адрес проблемной страницы. Запретить индексацию страницам с ошибкой в «rоbоts.txt», после чего добавить в файл «.htассеss» строку такого типа:
Где в поле /oldpage.html прописывается адрес проблемной страницы, а в http://site.com/newpage.html адрес страницы авторизации.
Таким образом вы перенаправите пользователей со всех страниц, которые выдают ошибку 401, на страницу начальной авторизации.
- Если после выполнения предыдущих рекомендаций пользователи при попытках авторизации все равно видят ошибку 401, то найдите на сервере файл «php.ini» и увеличьте время жизни сессии, изменив значения следующих параметров: «session.gc_maxlifetime» и «session.cookie_lifetime» на 1440 и 0 соответственно.
- Разработчики веб-ресурсов могут использовать более сложные методы авторизации и аутентификации доступа для создания дополнительной защиты по протоколу HTTP. Если устранить сбой простыми методами администрирования не удается, следует обратиться к специалистам, создававшим сайт, для внесения соответствующих изменений в код.
Хотя ошибка 401 и является проблемой на стороне клиента, ошибка пользователя на стороне сервера может привести к ложному требованию входа в систему. К примеру, сетевой администратор разрешит аутентификацию входа в систему всем пользователям, даже если это не требуется. В таком случае сообщение о несанкционированном доступе будет отображаться для всех, кто посещает сайт. Баг устраняется внесением соответствующих изменений в настройки.
Дополнительная информация об ошибке с кодом 401
Веб-серверы под управлением Microsoft IIS могут предоставить дополнительные данные об ошибке 401 Unauthorized в виде второго ряда цифр:
- 401, 1 – войти не удалось;
- 401, 2 – ошибка входа в систему из-за конфигурации сервера;
- 401, 3 – несанкционированный доступ из-за ACL на ресурс;
- 401, 501 – доступ запрещен: слишком много запросов с одного и того же клиентского IP; ограничение динамического IP-адреса – достигнут предел одновременных запросов и т.д.
Более подробную информацию об ошибке сервера 401 при использовании обычной проверки подлинности для подключения к веб-узлу, который размещен в службе MS IIS, смотрите здесь.
Следующие сообщения также являются ошибками на стороне клиента и относятся к 401 ошибке:
Как видим, появление ошибки авторизации 401 Unauthorized не является критичным для рядового посетителя сайта и чаще всего устраняется самыми простыми способами. В более сложной ситуации оказываются администраторы и владельцы интернет-ресурсов, но и они в 100% случаев разберутся с данным багом путем изменения настроек или корректировки html-кода с привлечением разработчика сайта.
Источник
HTTP Status Codes and Htaccess ErrorDocuments
I was trying to find an official, authoritative list of HTTP Status Codes but I kept finding lists that weren’t authoritative or complete. So I searched and found my answer in the Apache HTTP Server source code. Once I had the exact HTTP Status Codes and resulting Error Documents sent by Apache, I researched deeper into HTTP Status Codes by reading as many related RFC’s as I could find, and several other software source codes were explored. This is the most authoritative list I know of, if you can do better leave a comment and I’ll update it. Another thing to keep in mind, the Status code number itself is what is used by software and hardware to make determinations, the phrase returned by the status code is for the human only and does not have any weight other than informing the user.. So «503 Service Unavailable», «503 Service Temporarily Unavailable», and «503 Get the heck outta here» are all completely valid.
Update March 9, 2009: A lot of sites on the web have updated their HTTP status code lists to include the HTTP Status codes listed on this page, including Wikipedia, IANA, W3C, and others, so rest assured this info is accurate and complete. If you’d like to see how to create custom error pages for all of these errors like mine /show-error-506 , then check out this detailed tutorial I just posted.
57 APACHE HTTP STATUS RESPONSE CODES
Once I compiled the list of Apache recognized HTTP Status Codes, I was dying to see them all in action (i.e. the corresponding ErrorDocument). At first I thought I would have to create a php or perl script emulating each of the 57 HTTP Status Codes, a tedious undertaking I wasn’t about to do. Instead I «asked Apache» by searching the Apache HTTP Documentation for ambiguity sending Status Codes and/or triggering ErrorDocuments with an Apache Directive.
While reading up on mod_alias and the Redirect directive I found:
Syntax: Redirect [status] URL-path URL The status argument can be used to return other HTTP status codes. Other status codes can be returned by giving the numeric status code as the value of status. If the status is between 300 and 399, the URL argument must be present, otherwise it must be omitted.
1xx Info / Informational
HTTP_INFO — Request received, continuing process. Indicates a provisional response, consisting only of the Status-Line and optional headers, and is terminated by an empty line.
2xx Success / OK
HTTP_SUCCESS — The action was successfully received, understood, and accepted. Indicates that the client’s request was successfully received, understood, and accepted.
3xx Redirect
HTTP_REDIRECT — The client must take additional action to complete the request. Indicates that further action needs to be taken by the user-agent in order to fulfill the request. The action required may be carried out by the user agent without interaction with the user if and only if the method used in the second request is GET or HEAD. A user agent should not automatically redirect a request more than 5 times, since such redirections usually indicate an infinite loop.
4xx Client Error
HTTP_CLIENT_ERROR — The request contains bad syntax or cannot be fulfilled. Indicates case where client seems to have erred. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition.
5xx Server Error
HTTP_SERVER_ERROR — The server failed to fulfill an apparently valid request. Indicate cases in which the server is aware that it has erred or is incapable of performing the request. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition. User agents should display any included entity to the user. These response codes are applicable to any request method.
Quick Start to triggering ErrorDocuments for each Status Code
Let start with a quick and easy example. Add the following Redirect rules to your htaccess file, then open your browser and goto each url like yoursite.com/e/400 . Don’t create an /e/ directory or any files.
Automate the ErrorDocument Triggering
The htaccess Redirects
When a Status code is encountered, Apache outputs the Header and the ErrorDocument for that error code. So you can view any Header and the default ErrorDocument, by causing that numerical error code, which is caused by the Status Code.
For instance, if you request a file that doesn’t exist, a 404 Not Found Header is issued and the corresponding ErrorDocument is served with the 404 Not Found Header.
PHP script that gets and outputs the Headers/Content
Now all I have to do is add 57 Redirect Directives to my htaccess, and then request each of them 1 at a time from my browser to see the result, and use a packet sniffing program like WireShark to see the Headers. Uh, scratch that, that would take way too long!
Instead I hacked up a simple php script using cURL to automate sending GET Requests to each of the 57 Redirect URL-paths. A side benefit of using the php script is that it performs all 57 Requests concurrently and saves each Requests returned headers and content to an output buffer. After all 57 have been queried, the output buffer is flushed to the browser.
Источник
2 января, 2015 12:50 пп
15 315 views
| Комментариев нет
Cloud Server
При обращении к веб-серверу или приложению каждый поступивший HTTP-запрос получает в качестве ответа код состояния HTTP (англ. HTTP status code). Коды состояния HTTP – это трехзначные коды, сгруппированные в пять различных классов. Класс кода состояния можно определить по первой цифре:
- 1хх – информационные коды;
- 2хх – успех;
- 3хх – перенаправление;
- 4хх – ошибка клиента;
- 5хх – ошибка сервера.
Это руководство фокусируется на выявлении и устранении наиболее часто встречающихся кодов ошибок HTTP (то есть кодов состояния 4xx и 5xx) с точки зрения системного администратора. В некоторых ситуациях веб-сервер отвечает на запрос определенным кодом ошибки; рассмотрим общие возможные причины и решения.
Краткий обзор ошибок клиента и сервера
Ошибки клиента (коды состояния HTTP 400-499) возникают из-за HTTP-запросов, отправленных клиентом (веб-браузером или другим клиентом HTTP). Хотя данные типы ошибок связаны непосредственно с клиентом, системному администратору полезно знать, с какими кодами ошибок может столкнуться пользователь, чтобы определить, можно ли решить эту проблему в конфигурациях сервера.
Ошибки сервера (коды состояния HTTP 500-599) возникают тогда, когда веб-сервер не в состоянии обработать запрос из-за какой-либо ошибки или сбоя.
Общие советы по устранению ошибок HTTP
- При использовании веб-браузера для тестирования веб-сервера не забудьте обновить браузер после внесения изменений в настройки сервера.
- Проверяйте логи сервера, чтобы получить подробные сведения о том, как сервер обрабатывает запросы. Например, веб-серверы Apache и Nginx создают два файла по имени access.log и error.log, в которых можно найти соответствующую информацию.
- Запомните: определения кодов состояния HTTP являются частью стандарта, который реализуется обслуживающим запросы приложением. Это означает, что фактический код состояния, который возвращается в результате, зависит от того, как программное обеспечение сервера обрабатывает конкретную ошибку.
Ознакомившись с основными понятиями кодов состояния HTTP, приступим к обзору наиболее часто встречающихся ошибок.
Ошибка 400 Bad Request
Код статуса 400, или ошибка Bad Request («неверный запрос») означает, что синтаксис запроса HTTP, отправленного на сервер, неверен.
Как правило, причины возникновения ошибки 400 Bad Request таковы:
- Куки пользователя, связанные с сайтом, повреждены. Чтобы решить эту проблему,, попробуйте очистить кэш браузера и файлы cookie.
- Искаженный запрос из-за неисправного браузера.
- Искаженный запрос из-за ошибки пользователя при формировании HTTP-запроса вручную (например, неправильное использование curl).
Ошибка 401 Unauthorized
Код статуса 401, или ошибка Unauthorized («неавторизован») значит, что пользователь, пытающийся получить доступ к ресурсу, не прошел авторизацию (или не смог пройти ее, указав неверные учетные данные). Чтобы иметь возможность просматривать защищенный ресурс, пользователь должен предоставить корректные учетные данные.
Например, ошибка 401 Unauthorized может возникнуть, если пользователь пытается получить доступ к ресурсу, который защищен HTTP-авторизацией (как в этом руководстве по Nginx). В подобной ситуации ошибка 401 будет появляться снова и снова до тех пор, пока пользователь не предоставит корректный логин и пароль (который внесен в файл .htpasswd).
Ошибка 403 Forbidden
Код состояния 403, или ошибка Forbidden («запрещено») значит, что запрос пользователя был отправлен верно, но сервер отказывается обслуживать его в связи с отсутствием разрешения на доступ к запрашиваемому ресурсу. В этом разделе описаны наиболее распространенные причины возникновения ошибки 403.
Права на файл
Как правило, ошибка 403 случается, если пользователь, который запускает процесс веб-сервера, не имеет прав на чтение запрашиваемого файла.
Чтобы привести пример устранения ошибки 403, предположим, что:
- пользователь пытается получить доступ к индексному файлу (http://example.com/index.html);
- рабочий процесс веб-сервера принадлежит пользователю www-data;
- индексный файл на сервере находится в /usr/share/nginx/html/index.html.
Итак, если пользователь получает ошибку 403 Forbidden, убедитесь, что пользователь www-data имеет права на чтение файла. Как правило, в подобной ситуации нужно просто изменить права на файл. Это можно сделать несколькими способами, но в данном случае подойдет вот эта команда:
sudo chmod o=r /usr/share/nginx/html/index.html
Файл .htaccess
Еще одна потенциальная причина возникновения ошибки 403 (часто это делается намеренно) – использование файла .htaccess. При помощи файла .htaccess можно запретить конкретным IP-адресам (или диапазонам адресов) доступ к определенным ресурсам.
Если пользователи неожиданно получают ошибку 403 Forbidden, убедитесь, что она не была вызвана настройками файла .htaccess.
Несуществующий индексный файл
Если пользователь пытается получить доступ к каталогу, который не имеет стандартного индексного файла, а листинг каталога (directory listing) отключен, веб-сервер будет возвращать ошибку 403 Forbidden. Такое случится, если, например, пользователь попытается получить доступ к каталогу http://example.com/emptydir/, а в каталоге emptydir на сервере нет индексного файла. Листинг каталога можно включить в конфигурациях сервера.
Ошибка 404 Not Found
Код статуса 404, или ошибка Not Found («не найдено») значит, что пользователь может взаимодействовать с сервером, но требуемый файл или ресурс отсутствует.
Ошибки 404 могут возникнуть в самых различных ситуациях. Ниже приведен список советов, которые помогут устранить проблему в случае, если пользователь неожиданно получил 404 Not Found:
- Проверьте ссылку, которая направляет пользователя на сервер, на наличие ошибок или опечаток.
- Возможно, пользователь ввел неверный URL.
- Может быть, нужного файла не существует в указанном месте на сервере; убедитесь, что запрашиваемый ресурс не был перемещен или удален с сервера.
- Проверьте, правильно ли указано местонахождение корневого каталога (document root) в конфигурации сервера.
- Возможно, пользователь, которому принадлежит рабочий процесс веб-сервера, не имеет соответствующих прав, чтобы открыть каталог, в котором находится запрашиваемый файл. Для доступа к каталогу нужны права на чтение и выполнение.
- Если пользователь переходит к ресурсу по символической ссылке, убедитесь, что веб-сервер настроен для поддержки символических ссылок.
Ошибка 500 Internal Server Error
Код состояния 500, или ошибка Internal Server Error («внутренняя ошибка сервера») означает, что сервер не может обработать запрос по неизвестной причине. Иногда этот код появляется в ситуациях, когда более подходящими являются другие сообщения об ошибках 5xx.
Как правило, причиной данной ошибки является неправильная настройка сервера (например, искаженный файл .htaccess) или нехватка некоторых пакетов (к примеру, запуск файла PHP без предварительно установленного PHP).
Ошибка 502 Bad Gateway
Код состояния 502, или ошибка Bad Gateway («ошибочный шлюз») значит, что запрашиваемый сервер является шлюзом или прокси-сервером, и он не получает валидных ответов от серверов бэкэнда, которые на самом деле выполнили запрос.
Если речь идет об обратном прокси-сервере (например, о балансировщике нагрузки), убедитесь, что:
- с серверами бэкэнда (на которые пересылаются HTTP-запросы) все в порядке;
- обратный прокси настроен правильно, в его настройках указаны корректные бэкэнды;
- сетевое соединение между серверами бэкэнда и обратным прокси-сервером в порядке. Если серверы могут взаимодействовать на других портах, убедитесь, что эти порты не заблокированы брандмауэром;
- нужные сокеты существуют в корректном местонахождении и имеют соответствующие разрешения (если веб-приложение настроено слушать сокеты).
Ошибка 503 Service Unavailable
Код состояния 503, или ошибка Service Unavailable («сервис недоступен») означает, что сервер перегружен или находится на обслуживании; такой сервис должен стать доступным в течение некоторого времени.
Если сервер не находится на обслуживании, эта ошибка может указывать на то, что серверу не хватает ресурсов процессора или памяти для обработки всех входящих запросов, или что нужно настроить веб-сервер для обслуживания большего количества пользователей или процессов.
Ошибка 504 Gateway Timeout
Код состояния 504, или ошибка Gateway Timeout («шлюз не отвечает») значит, что данный сервер является шлюзом или прокси-сервером, и он не получает ответа от бэкэнда в пределах допустимого периода времени.
Как правило, это происходит по следующим причинам:
- Плохое сетевое соединение между серверами;
- Внутренний сервер, который выполняет запрос, работает слишком медленно;
- В настройках сервера задано слишком короткое время ожидания шлюза или прокси-сервера.
Заключение
Теперь вы знакомы с основными кодами ошибок HTTP и знаете некоторые пути решения этих проблем.
Если же вы столкнулись с ошибкой, которая не была охвачена данной статьей, или знаете другие удобные способы устранения ошибок HTTP, пожалуйста, опишите их в комментариях ниже.
Tags: Cloud Server, HTTP, HTTP status code, VPS
Все мы видели их не раз и не два: Web-страницы с лаконичным текстом, извещающим, что туда, куда нам нужно, мы попасть не можем, и в нескольких словах объясняющим почему. Самая распространенная страница этого типа содержит гигантскую жирную надпись 404 Not Found (404: ресурс не найден), а под ней — чуть ли не извинения: URL ‘/abcde.html’ not found on server (ресурс с URL ‘/abcde.html’ на сервере не найден). Не исключено, что страница «404 Not Found» — самая посещаемая в мире.
Все коды состояний определены в разработанных W3C спецификациях HTTP/1.1 на странице 51 и следующих. Определение каждого кода содержит «метод(ы), которым он может следовать, и полный список метаинформации, необходимой для правильной реакции». Перечислю наиболее распространенные коды ошибок.
204 No Content
Нет содержания. Это означает, что сервер выполнил запрос по протоколу HTTP, но новой информации, которую он мог бы передать клиенту, не существует.
200 OK
Все в порядке. Знаете ли вы о том, что при всяком успешном обращении к Web-странице сервер регистрирует код OK? Вот это он и есть. Код означает, что запрос был успешно обработан, но пользователю соответствующее сообщение никогда не показывают
400 Bad Request
Некорректный запрос. Запрос HTTP не был понят сервером из-за неправильного синтаксиса. Проверьте, не сделали ли вы где-нибудь опечатку, исправьте запрос и попытайтесь послать его снова.
401 Unauthorized
Нет разрешения. Запрос требует идентификации пользователя в соответствии со стандартом WWW, т. е. вам необходимы правильный идентификатор пользователя и пароль. Увидев это сообщение, проверьте в идентификаторе и пароле правописание и регистр (он существен и там, и там), кроме того, попробуйте печатать чуть медленнее. Если же вы пытаетесь пробраться на закрытую страницу, не будучи на ней зарегистрированным, я могу помочь вам, разве что напомнив, что Bob — очень распространенное имя пользователя, а sex — весьма популярный пароль. Все прочее оставляю на усмотрение читателя.
402 Payment Required
Требуется оплата. Сейчас этот код не применяют, в спецификациях он резервируется на будущее.
403 Forbidden
Доступ запрещен. У меня всегда такое чувство, что при этом коде надо бы выводить на экран картинку с черепом и скрещенными костями. Код означает, что сервер понял запрос, но отказывается его выполнить. Пароль тут ни при чем, повторные обращения также ничего не дадут. Обычно это сообщение используется на серверах, сконфигурированных так, чтобы скрывать от пользователя конкретную причину отказа.
404 Not Found
Ресурс не найден. Код, порождающий самую распространенную, самую узнаваемую страницу на свете. Он означает, что сервер не обнаружил ничего такого, что соответствовало бы запросу. Сервер ведет себя довольно любезно — по крайней мере сообщает, что именно он пытался, но не смог найти; например, текст URL ‘/microsoft.html’ not found on server (ресурс с URL ‘/microsoft.html’ на сервере не найден) подскажет вам, в чем дело, если на самом деле вам нужен файл microscope.html. Самая распространенная причина выдачи этого кода — опечатки, в том числе использование неправильного регистра. Вторая по распространенности причина состоит в том, что страницы, которую вы ищете, на сервере больше нет.
500 Internal Server Error
Внутренняя ошибка сервера. Согласно описанию HTTP/1.1, этот код выдается, когда «сервер столкнулся с неожиданными обстоятельствами, препятствующими выполнению запроса». Иначе говоря, вы ни в чем не виноваты и ничего не можете предпринять — разве что связаться с Web-мастером узла.
503 Service Unavailable
Служба недоступна. Сервер не может в данный момент обработать запрос, поскольку временно перегружен или закрыт на техническое обслуживание. Здесь, как и в предыдущем случае, вина не ваша, а ваши возможности ограничены письмом несчастному Web-мастеру, который, быть может, именно в эту минуту пытается как-то совладать с возникшей проблемой. В общем случае код означает, что Web-сервер и система нуждаются в модернизации, чтобы справляться с таким числом поступающих запросов.
Классы ошибок
Каждый конкретный трехзначный код входит в некоторый класс; его можно определить по первой цифре.
Коды первого класса (1xx) — чисто информационные. В спецификациях HTTP/1.0 не определен ни один код ошибки из этого класса, так что серверы не посылают ответов с кодом 1xx никаким клиентам HTTP/1.0. Коды класса 1xx:
100 Continue (продолжить)
101 Switching Protocols (переключение протоколов)
Коды второго класса (2xx) соответствуют ситуациям, когда HTTP-запрос клиента успешно получен, понят и принят сервером. Это следующие коды:
200 OK
201 Created (объект создан)
202 Accepted (информация принята)
203 Non-Authoritative Information (не заслуживающая доверия информация)
204 No Content (нет содержания)
205 Reset Content (восстановить исходное содержание)
206 Partial Content (частичное содержание)
Класс 3xx составляют сообщения о перенаправлениях; чтобы выполнить запрос HTTP нужны еще какие-то действия пользовательского агента. Коды этого класса:
300 Multiple Choices (несколько вариантов на выбор)
301 Moved Permanently (ресурс перемещен на постоянной основе)
302 Moved Temporarily (ресурс временно перемещен)
303 See Other (смотрите другой ресурс)
304 Not Modified (не изменился)
305 Use Proxy (используйте прокси-сервер)
В классе 4xx больше всего разных кодов. С помощью этих кодов сервер сообщает об ошибке программы-клиента, т. е. о том, что проблема связана не с ним — сервером, а с вами — путешественником по Web. Вот их полный перечень:
400 Bad Request (некорректный запрос)
401 Unauthorized (нет разрешения)
402 Payment Required (требуется оплата)
403 Forbidden (доступ запрещен)
404 Not Found (ресурс не найден)
405 Method Not Allowed (недопустимый метод)
406 Not Acceptable (неприемлемый запрос)
407 Proxy Authentication Required (необходима регистрация на сервере-представителе)
408 Request Timeout (время обработки запроса истекло)
409 Conflict (конфликт)
410 Gone (ресурса больше нет)
411 Length Required (необходимо указать длину)
412 Precondition Failed (не выполнено предварительное условие)
413 Request Entity Too Large (запрашиваемый элемент слишком велик)
414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный)
415 Unsupported Media Type (неподдерживаемый тип устройства)
Возможно, серверы не раз выдавали вам коды класса 4xx, но результат выводился в другом формате. Попробуйте, например, задать в браузере адрес http://www.yahoo.com/whatever.html.
На экране появится специальная страница, используемая на сервере Yahoo! для извещения о том, что запрошенного документа не существует. Сервер пытается оказать вам посильную помощь, предъявив ближайший существующий аналог заданного ему запроса; в данном случае это просто основная страница самого Yahoo! (http://www.yahoo.com/).
Большинство Web-серверов в очень многих случаях перенаправляют пользователя на специальную страницу. Заготовив набор страниц для типовых ситуаций, можно легко сконфигурировать Web-сервер так, чтобы он в зависимости от кода ошибки давал пользователю те или иные указания.
Коды класса 5xx соответствуют симметричной ситуации — ошибке на сервере — и не имеют никакого отношения к пользователям Web. Однако если вы Web-мастер или отвечаете в своей фирме за подключение к Internet, вы, конечно, должны быть в курсе значений этих кодов и понимать, видят ли их пользователи на экранах своих браузеров. Каждый такой код несет полезную информацию, которая может пригодиться для устранения неисправности:
500 Internal Server Error (внутренняя ошибка сервера)
501 Not Implemented (функция не реализована)
502 Bad Gateway (дефект шлюза)
503 Service Unavailable (служба недоступна)
504 Gateway Timeout (время прохождения через шлюз истекло)
505 HTTP Version Not Supported (неподдерживаемая версия HTTP)
Настройка реакции на ошибку
Как мы видели на примере Yahoo!, можно заставить Web-сервер выдавать более дружелюбные сообщения об ошибках. К сожалению, конкретный способ сделать это для каждого сервера свой. Но при том что детали варьируются, суть остается неизменной. Первым делом вы создаете страницу (или страницы) с информацией, помогающей посетителю вашего узла вновь обрести почву под ногами. Естественное решение состоит в том, что это должен быть URL базовой страницы или поисковой системы узла. Затем необходимо сообщить Web-серверу, в каких случаях такая страница должна использоваться.
В случае серверов Netscape для этого нужно запустить программу администрирования ns-admin, нажать кнопку System Settings (установки системы), выбрать пункт Error Responses (реакция на ошибки), после чего заполнить форму.
Для других Web-серверов необходимую информацию следует искать в их документации.
Новые коды
В большинстве своем люди соглашаются с тем, что коды ошибок, рассматриваемые в статье, обезличены и несколько суховаты. Возможно, следовало бы предложить набор более содержательных и интересных кодов ошибок, объединив их в новый класс 6xx. Вот некоторые идеи:
600 Get a Life
Вернитесь в реальный мир. Послушайте, время — три часа ночи. Пора кончать лазанье по Паутине (или, если вы Web-мастер, копание в сервере) и отправляться на боковую.
601 Inappropriate Material
Неподходящий материал. Содержание страницы сомнительно или подпадает под ограничение «детям до шестнадцати». А вам действительно уже есть шестнадцать? Если нет, немедленно отправляйтесь по адресу http://www.pbs.org/rogers/ (популярная Web-страница для детей и их родителей. — Прим. ред.).
602 Really Bad Web Design
Действительно плохой дизайн. Эта страница отвратительна. Скажите Web-мастеру (или кто у них там пишет на HTML), чтобы прочел практикум по HTML Ричарда Кука в июльском номере NetscapeWorld за 1997 г. (http://www.netscapeworld.com//netscapeworld/nw-07-1997/nw-07-bestpract.html).
603 Random Status Code
Просто так. И с клиентом, и с запросом все в порядке. Но сервер вдруг решил вместо намеченной страницы направить вас на эту без всякой на то причины.
604 Cat GIF or JPEG Warning
Предупреждение: кошка в формате GIF или JPEG. Эта страница содержит фотографию кошки (кошек) разработчика.
607 Inflated Resume
Раздутое резюме. Легкий уклон в сторону профессиональных достижений вполне объясним, но это уже переходит всякие границы.
608 Unsupported Political Bombast
Неподдерживаемая политическая фигура. Страница содержит приводимые всерьез, но без всякого обоснования нападки на политических деятелей — как если бы нам уже нужна была порочащая их ложь.
609 Copyright Violation
Нарушение авторского права. Страница содержит материалы, принадлежащие другим и используемые без их согласия.
Помоему пост получился исчерповающим=)
Атор