В каких Кодах состояния HTTP Программисты должны быть Обеспокоены?

Так, если бы Вы смотрите на Список Кодов состояния HTTP, существуют, вероятно, много они, которые были бы полезны при программировании. Сервер мог бы обработать некоторые вещи, как протоколы, но много этих кодов могло быть полезным в сообщении браузера фактическое состояние страницы.

Так, мой вопрос - в каких из этих кодов статусов мы должны быть обеспокоены? Который должен мы проверить для отправки, и которые никогда не будут, скорее всего, использоваться в программировании регулярного применения.

Если бы Вам любопытно, это в пределах программирования PHP, но оно, вероятно, относилось бы к другим языкам точно также.

11
задан Tyler Carter 4 January 2010 в 22:40
поделиться

6 ответов

Многие из них по своей сути полезны при использовании API в стиле REST. Например:

  • 200 (OK): Вы запросили ресурс. Вот оно!

  • 201 (Создано): Вы попросили меня сделать новый ресурс. Я сделал это! Вот где вы можете попросить меня сделать это в следующий раз.

  • 202 (Принято): Вы попросили меня сделать что-то, но это займет некоторое время, так что не ждите. Вот куда ты можешь пойти, чтобы проверить статус.

  • 300 (Multiple Choices): Ты попросил что-то сделать, но ты не был достаточно конкретен. Какую из них вы имели в виду?

  • 301 (Moved Permanently): Вы что-то просили, но сейчас это где-то в другом месте. Вот куда оно пошло.

  • 302 (Найдено): Вы просили что-то, но сейчас оно где-то в другом месте. Вот оно.

  • 304 (Не изменено): Вы просили что-то до этого, но это не изменилось с тех пор, как вы просили меня в последний раз.

  • 400 (Плохой запрос): Что-то не так в том, что вы просили меня сделать. Исправьте сказанное и повторите попытку.

  • 401 (Unauthorized): Мне нужно, чтобы вы идентифицировали себя, прежде чем я смогу закончить этот запрос. [Примечание: Это один из самых названных, к сожалению, заголовков. На самом деле он должен быть назван Unauthenticated; 403 больше похож на Unauthorized.]

  • 403 (Запрещенный): Вы просили что-то, что вам не разрешено иметь.

  • 404 (Не найдено): Вы запросили ресурс, но он не соответствует вашему описанию.

  • 500 (Ошибка сервера): Что-то пошло не так, поэтому я не могу дать вам то, что вы просили прямо сейчас. Извините за это.

  • 501 (Не реализовано): Сейчас я не поддерживаю такой запрос.

  • 503 (Сервис недоступен): Сейчас я не могу отвечать на запросы.

23
ответ дан 3 December 2019 в 02:52
поделиться

Точнее, это просто коды статуса HTTP, а не заголовки HTTP. Заголовки передают много вещей и посылаются как клиентом, так и сервером, и выходят за рамки этого ответа.

Один из заголовков HTTP, а именно, первый, посылаемый сервером клиенту, выглядит следующим образом:

HTTP/1.x 200 OK

или:

HTTP/1.x 404 Not Found

Номер, который появляется после идентификатора протокола HTTP/1.x - это то, что называется кодом статуса с соответствующим сообщением о статусе, посылаемым после него. Вот коды статуса, которые мне приходилось использовать в дни программирования на PHP:

  • 200 OK - это, безусловно, самый распространенный код. Это означает, что все работает нормально и что вы отвечаете содержанием.
  • 404 Not Found автоматически посылается сервером при определенных условиях, в частности, когда запрос приводит к выполнению скрипта, который не может быть найден на сервере. Иногда, особенно если вы пишете фреймворки, которые обрабатывают URI особым образом, вы захотите вручную установить код статуса 404. Например, если у вас есть один центральный исполняющий скрипт index.php, через который вы направляете все запросы, используя .htaccess или ваши настройки Apache, Apache почти никогда не вернёт 404 по своему усмотрению, потому что, в конце концов, он нашёл index.php. Но очевидно, что всё же будут некоторые URI, к которым вы захотите обратиться, никуда не ведут, для чего вы захотите отправить свой собственный заголовок статуса 404.
  • 301 Moved Permanently и 302 Found (более часто упоминается как 'Moved Temporarily'). Эти два инструктируют браузер искать заголовок Location и перенаправлять пользователя на указанный там URL. Большинство PHP-фреймворков имеют свои собственные функции для HTTP перенаправления, которые также обрабатывают заголовки. Нативный редирект PHP header('Location: http://www.google.com'); автоматически изменяет статус HTTP на 302. Я никогда не понимал в глубине души разницу между 302 и 301, но я читал, что 301 гораздо лучше подходит для оптимизации поисковых систем, поэтому я стараюсь всегда использовать 301. Возможно, кто-то другой сможет прояснить, в чем именно разница. Одно дело быть осторожным, чтобы не поместить статус 301/302 и заголовок Location на странице, которая предназначена для получения POST-данных. У меня были некоторые проблемы с этим в прошлом.
  • 304 Не изменённый обычно отправляется автоматически в зависимости от настроек Apache. Большинство браузеров при нормальных условиях включают в себя дату/время, когда запрашиваемый элемент был кэширован на компьютере пользователя. Для этого используются ETags и другие заголовки. Если Apache считает, что соответствующий файл сервера не изменился с того времени, Apache часто посылает 304 без содержимого, которое просто говорит клиенту использовать кэшированную версию.
  • 401 Unauthorized посылается, когда пользователь пытается получить доступ к ограниченному разделу на сайте. Существуют некоторые старые HTML-функции и серверные технологии, которые поддерживают встроенные подсказки по имени пользователя/паролю, которые посылают 401 статусный код, когда подсказки отменяются или не авторизуются. Большинство людей в наши дни пишут свои собственные PHP-реализации для аутентификации пользователей и управления правами, поэтому Apache не часто посылает 401 код по своему усмотрению. Вы можете отправить статус вручную, чтобы указать, что для доступа к странице требуется больше прав.
  • 400 Плохой запрос посылается Apache, если он получает запрос, который ему непонятен. Обычно вам не нужно беспокоиться о том, чтобы отправить его вручную.
  • 403 Forbidden используется некоторыми людьми, когда пользователи пытаются получить доступ к области, к которой они не смогут получить доступ, даже при правильной аутентификации, возможно, из-за географических, IP или запрещающих ограничений. Я не использую его сам, а просто использую 401 и 404 для заполнения.
  • 5xx. 500-я серия - это те коды, которые вы действительно не видите как разработчик. Это значит, что ваш код или сервер сделал что-то плохое. Если у вас есть сервер или система балансировки нагрузки достаточного калибра и у вас нет ошибок в коде, вы никогда не увидите 500-ю серию.
4
ответ дан 3 December 2019 в 02:52
поделиться
[

] Ну, это коды статуса, а не заголовки, но любой из них может быть полезен (хотя серия 5xx вряд ли будет)[

].
1
ответ дан 3 December 2019 в 02:52
поделиться
[

] Я так понимаю, вы говорите об использовании заголовков либо для обслуживания файлов, либо для предоставления RESTful веб-сервиса? [

] [

] Тогда тебе будут нужны коды статуса, а не заголовки. Те, которые я обычно использую: [

] [
200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error
] [

] Конечно, для RESTful webservices вы можете изменить текст, чтобы он был более описательным, а также содержал описание в теле [

]. [

] Потом: [

] [
418 I'm a teapot
]
1
ответ дан 3 December 2019 в 02:52
поделиться
[

]Быстро просматривая этот список [](коды статусов)[], вот те, которые я часто использую [](Я занимаюсь веб-разработкой PHP в качестве своей работы)[] :[

] [] [

] И вот те, которые я мог бы использовать [] (особенно, если делаю REST) [] :[

] []
1
ответ дан 3 December 2019 в 02:52
поделиться
[

] Больше всего я использовал: [

] [
    ] [
  • ]301 - Постоянно перемещается - Используйте это, если ресурс постоянно перемещается в новый url.[
  • ]. [
  • ]302 - Moved Temporarily - Используйте это для перенаправления, когда вы не можете иметь постоянного перенаправления. [
  • ] [
  • ] 404 - Не найдено. Ваш сервер должен быть настроен на обслуживание недействительных urls. Вы должны следить за ними в логах - многие 404-ые являются признаком плохого нажатия.[
  • ]. [
  • ] 500 - Ошибка внутреннего сервера. Ваш сервер должен быть настроен на правильную отправку этих сообщений в случае возникновения ошибок. Вы должны отслеживать 5xx ошибки в ваших журналах [
  • ]. [
]
0
ответ дан 3 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: