Анализ кода состояния HTTP
Я использую PHP для анализа числовой части ответа кода состояния HTTP. Учитывая стандартный ответ "HTTP/1.1 200 OK", я бы использовал:
$data = explode(' ', "HTTP/1.1 200 OK");
$code = $data[1];
Я не эксперт по HTTP. Был бы я когда-либо сталкиваться с ответом, когда код не находится в позиции $data [1], как в приведенном выше примере? Я просто хочу быть уверенным, что этот способ разграничения кода ответа всегда будет работать для любого ответа.
Спасибо, Брайан
Ответы
Ответ 1
Если вы сомневаетесь, проверьте спецификацию. Спецификация в этом случае для HTTP/1.1, RFC2616. В разделе раздел 6.1 он описывает строку состояния, первый компонент ответа, как:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
То есть - одно пространство ASCII (SP
) должно отделить HTTP-версию и код состояния - и если вы проверите определение HTTP-версии (в раздел 3.1), он не может содержать пробел, а также код состояния.
Итак, вы можете пойти с этим кодом.
Ответ 2
Нет, вы никогда не столкнетесь с ответом (если это правильный HTTP-ответ), который имеет другой формат. См. HTTP RFC (2616).
Ответ 3
Нет, если веб-сервер уважает стандарты, выполняющие взрыв, и кеширование второго элемента массива прекрасное.
если вы действительно хотите убедиться, что используете регулярное выражение
то есть.
preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|',$subject,$match);
var_dump($match[1]);
Приветствия
Ответ 4
Нет, что вы делаете, ОК, если все, что вам нужно, это числовое. Если вы также хотите получить сообщение, вы также разделите его, т.е.
HTTP/1.1 404 Not Found