Подтвердить что ты не робот

Может ли HTTP-ответ пропустить фразу разума?

Нормальный ответ HTTP выглядит следующим образом:

HTTP/1.0 200 OK

Можно ли опустить то, что RFC вызывает фразу разума? Что-то вроде:

HTTP/1.0 200

В RFC говорится:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Reason-Phrase  = *<TEXT, excluding CR, LF>

Я понимаю это как:

  • Пустая строка в порядке для Reason-Phrase
  • Но в любом случае должно существовать пробел после кода состояния

Таким образом, было бы справедливо следующее:

HTTP-Version SP Status-Code SP CRLF

Правильно ли я понимаю RFC?

4b9b3361

Ответ 1

Это выглядит так, если вы читаете * как "ноль или больше символов", как в регулярных выражениях.

Похоже, что имеет немного другое значение, если вы читаете Нотационную конвенцию в RFC:

*rule

The character "*" preceding an element indicates repetition. The full form is "<n>*<m>element" indicating at least <n> and at most <m> occurrences of element. Default values are 0 and infinity so that "*(element)" allows any number, including zero; "1*element" requires at least one; and "1*2element" allows one or two.

Итак, хотя это не регулярное выражение, смысл по существу тот же. Астерикс, не имеющий конечного числа в этом случае, означает, что могут быть "0 или более" "тексты". Нечетный способ выразить это, но, похоже, вы правы.

Строго говоря, пространство является обязательным, хотя я думаю, что разделитель может быть опущен, если нечего отделять. Это может убить клиентов, которые имеют строгую реализацию, однако, если они просто разделили эту строку на пробелы и попытались прочитать элемент, в котором должно быть описание. Но опять же, эти клиенты должны были использовать некоторые защитные программы, чтобы поймать эту ситуацию.;)

RFC заявляет, что это может быть любой текст, если он является понятным для человека описанием проблемы. Этот текст важен, поскольку клиент может не понимать точного значения кода состояния, поэтому ему может потребоваться отобразить текст пользователю. Поэтому, даже если вы можете опустить это, я лично этого не сделал.