Коды состояния HTTP в приложении PHP

Недавно я решил отправить правильный HTTP-заголовок из своего PHP-приложения.
Поскольку я никогда раньше этого не делал, у меня есть пара очень простых вопросов.

Коды состояния 200 и 404 кажутся очевидными.
А как насчет других?

Разрешено/рекомендуется/не рекомендуется использовать 403, например, если пользователю необходимо войти в систему через HTML-форму, чтобы использовать страницу?

Как насчет 415 для загрузки файлов? Было бы неплохо установить заголовок 415, например, если пользователь загружает изображение с неподдерживаемым расширением?


person Christian Schnorr    schedule 25.02.2014    source источник


Ответы (4)


Полный список кодов, признанных W3C, находится здесь. Определения содержат четкие указания о том, когда следует и не следует использовать каждый код. Например, предлагаемое вами использование 403 противоречит определению W3C.

person Community    schedule 25.02.2014

Статус 409 (конфликт) может быть возвращен при двойной отправке, статус 401 — при несанкционированной отправке. Для неверных запросов (необрабатываемых) вы можете вернуть статус 422. здесь и здесь есть дополнительные предложения по коду состояния HTTP .

person Vasilis    schedule 25.02.2014

Это зависит от приложения, которое вы создаете.

Если вы создаете приложение restfull, обязательно используйте правильные коды состояния. Но когда вы создаете веб-сайт, сгенерированный бэкэндом, вам решать, как вы обрабатываете ошибки клиента/сервера и маршрутизацию.

Я думаю, что нужно сделать только одно правило - для хорошего взаимодействия с пользователем - обрабатывать все ошибки надлежащим образом (если 401, то перенаправить на вход и т. д.)

person petkopalko    schedule 25.02.2014

Я думаю, вы должны использовать эти коды состояния для типичного веб-сайта:

  • 200 Ok (если все в порядке, что даже если кто-то загрузит поврежденный файл - выдать пользователю сообщение об ошибке)
  • 301 Постоянная переадресация
  • 302 временная переадресация
  • 304 Не изменено
  • 404 Не Найдено
  • 410 ушел

Если вы создаете веб-службу REST, вы можете использовать еще несколько кодов состояния. Но для типичного веб-сайта коды состояния, перечисленные выше, подходят.

person truehl    schedule 25.02.2014