С какими кодами статуса HTTP должны беспокоиться программисты?

StackOverflow https://stackoverflow.com/questions/2002801

Вопрос

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

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

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

Это было полезно?

Решение

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

  • 200 (ОК): Вы попросили ресурс. Вот!

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

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

  • 300 (несколько вариантов): Вы что -то попросили, но вы не были достаточно конкретными. Что вы имели в виду?

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

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

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

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

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

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

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

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

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

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

Другие советы

Чтобы быть более точным, это просто коды статуса 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 (чаще называется «временно перемещенным»). Эти двое поручают браузеру искать Location Заголовок и перенаправить пользователя на URL, указанный там. Большинство фреймворков PHP имеют свои собственные функции для http -перенаправления, которые также обрабатывают заголовки. Нативная перенаправление PHP header('Location: http://www.google.com'); автоматически изменяет статус HTTP на 302. Я никогда не понял глубины разницы между 302 и 301, но я читал, что 301 гораздо лучше для поисковой оптимизации, поэтому я стараюсь всегда использовать 301. Возможно, кто -то другой может просветите на то, что такое точная разница. Одна вещь, которой нужно быть осторожным, - это избегать размещения статуса 301/302 и заголовка местоположения на странице, которая предназначена для получения данных о публикации. У меня были проблемы с этим в прошлом.
  • 304 Not Modified обычно отправляется автоматически в зависимости от ваших настроек Apache. Большинство браузеров в обычных условиях включают дату/время, в которое запрашиваемый элемент был кэширован на компьютере пользователя. ETAGS и другие заголовки используются для этой цели. Если Apache судит, что соответствующий файл сервера не изменился с тех пор, Apache часто отправляет 304 без контента, что просто говорит клиенту использовать кэшированную версию.
  • 401 Unauthorized отправляется, когда пользователь пытается получить доступ к разделу с ограниченным доступом на веб -сайте. Существуют некоторые старые функции HTML и серверные технологии, которые поддерживают собственные подсказки/пароль, которые отправляли 401 кода статуса, когда подсказки были отменены или не разрешены. Большинство людей в наши дни пишут свои собственные реализации PHP для аутентификации пользователей и управления правами, поэтому Apache не часто отправляет 401 сами по себе. Вы можете отправить статус вручную, чтобы указать, что для доступа к странице необходимо больше прав.
  • 400 Bad Request отправляется Apache, если он получает запрос, который не может понять. Обычно вам не нужно беспокоиться о отправке вручную.
  • 403 Forbidden используется некоторыми людьми, когда пользователи пытаются получить доступ к области, к которой они не смогут получить доступ, даже с надлежащей аутентификацией, возможно, из -за географического, IP или запрета ограничений. Я не использую это сам, и я просто использую 401 и 404, чтобы заполнить.
  • 5xx. Анкет 500-й серии-это коды, которые вы действительно не видите в качестве разработчика. Это означает, что ваш код или сервер сделали что -то плохое. Если у вас есть сервер или система балансировки нагрузки достаточного уровня, и у вас нет ошибок в вашем коде, вы никогда не увидите серии 500.

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

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

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

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

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

  • 200 OK : Почти всегда отправлено Apache
  • 301 Moved Permanently : Обычно отправлено мной (или Apache, при использовании rewrite-rules)
  • 302 Found : Обычно отправлено мной (или Apache, при использовании rewrite-rules)
  • 304 Not Modified : Обычно отправляется Apache (или обратный прокси перед ним)
  • 401 Unauthorized : Обычно отправляется Apache
  • 403 Forbidden : Обычно отправляется Apache
  • 404 Not Found : отправлено оба Апаче и мне - в зависимости от ситуаций
  • 410 Gone : Обычно отправлено мной
  • 500 Internal Server Error : отправлено оба Апач и я; Это тот, который я обычно использую, когда существует «техническая» ошибка - даже если это никогда не произойдет ^^

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

Те, которые я использовал больше всего:

  • 301 - Перенос навсегда - Используйте это, если ресурс постоянно перемещен в новый URL.
  • 302 - временно перемещен - используйте это для перенаправления, когда вы не можете иметь постоянный перенаправление.
  • 404 Не Найдено. Ваш сервер должен быть настроен, чтобы обслуживать это для неверных URL -адресов. Вы должны следить за ними в своих журналах-во многих 404 годах является признаком плохого толчка.
  • внутренняя ошибка сервера 500. Ваш сервер должен быть настроен для правильной отправки их, когда есть ошибки. Вы должны отслеживать ошибки 5xx в своих журналах.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top