Как правильно: “503 Service Temporarily Unavailable” или “503 Service Unavailable”?

190
01 июля 2017, 12:12
  1. На php.net отсутствует информация по формату заголовков header.
  2. В спецификации HTTP/1.0 указано: 503 Service Unavailable.

В сети встречаются оба формата записи:

header('HTTP/1.0 503 Service Unavailable');
header('HTTP/1.0 503 Service Temporarily Unavailable');

Так же интересует корректность этих заголовков:

header('HTTP/1.0 400 Bad Request');
header('HTTP/1.0 404 Not Found');
Answer 1

По стандарту – "503 Service Unavailable"

Но вы вольны использовать любую формулировку или вовсе оставить только код:

6.1.1 Status Code and Reason Phrase

The Status-Code element is a 3-digit integer result code of the attempt to understand and satisfy the request. These codes are fully defined in section 10. The Reason-Phrase is intended to give a short textual description of the Status-Code. The Status-Code is intended for use by automata and the Reason-Phrase is intended for the human user. The client is not required to examine or display the Reason- Phrase.

(курсив мой)

6.1.1 Код состояния и поясняющая фраза

Код состояния — это трехциферный код, обозначающий попытку понять и ответить на запрос. Подобные коды подробно определяются в секции 10. Смысл поясняющей фразы в том, чтобы дать короткое текстовое описание кода состояния. Предполагается, что код состояния будет обрабатываться машиной, а поясняющую фразу будет читать человек. От клиента не требуется, чтобы он обрабатывал или отображал поясняющую фразу.

Есть одна интересная оговорка о разнице между временными и постоянными поломками:

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

На все запросы кроме HEAD [к ответу со статусом 5хх] сервер ДОЛЖЕН добавлять данные о ситуации, в которой произошла ошибка, а также о том, является проблема постоянной или временной. Пользовательские агенты [например, браузеры] ДОЛЖНЫ отображать пользователю любые приложенные данные.

Итог:

  • Вам не стоит беспокоиться о формулировке поясняющей фразы. Почти наверняка пользователь её не увидит, а программы вообще не должны её учитывать.
  • Вы должны приложить к ответу 5xx данные о том, почему произошла ошибка и является ли она постоянной или временной. Наверняка пользователь увидит эти данные.

По субъективному опыту, хорошим тоном в GET-запросах является специальная страница, которая говорит о том, что случилась какая-то ошибка, но о ней уже известно и идёт работа над тем, чтобы её исправить.

READ ALSO
как открыть *.crl файл на php

как открыть *.crl файл на php

Нужно считать из файла id сертификатов но не могу найти решения для php нахожу только программки под windows

191
Ошибка при попытке загрузить файл с диска yandex через webdav

Ошибка при попытке загрузить файл с диска yandex через webdav

Всем приветЯ пытаюсь загрузить большой файл с диска yandex с помощью webdav, но в качестве ответа я получаю следующую ошибку

226
Не работает обработчик ошибок try catch

Не работает обработчик ошибок try catch

Почему блок catch не срабатывает, если будет ошибка? Если биндить несуществующие переменные

283