Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разбор кода состояния HTTP

Автор вопроса: BrianОтветов: 4

Я использую PHP для анализа числовой части ответа кода состояния HTTP. Учитывая стандартный ответ "HTTP/1.1 200 OK", я бы использовал:

$data = explode(' ', "HTTP/1.1 200 OK");
$code = $data[1];

Я не эксперт по HTTP. Встречу ли я когда-нибудь ответ, в котором код не находится в позиции $data[1], как в приведенном выше примере? Я просто хочу быть уверен, что этот метод разграничения кода ответа всегда будет работать для любого ответа.

Спасибо, Брайан

  • если вы используете cURL, вы можете выглядеть так: curl_getinfo($ch,CURLINFO_HTTP_CODE); который вернет 200 или любой другой статус http. Mickey 18.09.2009

httpphpheaderhttp-status-codes

Ответы

Ответ 1 · рейтинг 16 · caf

Если вы сомневаетесь, проверьте спецификацию. Спецификация в данном случае для HTTP/1.1 - RFC2616. В разделе 6.1 описывается строка состояния , первый компонент Response, например:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

То есть - один пробел ASCII (SP) должен разделять HTTP-версию и код состояния - и если вы проверите определение HTTP-версии (в Раздел 3.1) он не может включать пробел, как и код состояния.

Итак, вы можете использовать этот код.

Ответ 2 · рейтинг 7 · RageZ

Нет, если веб-сервер соблюдает стандарты, делающие взрыв и кэширование второго элемента массива в порядке.

если вы действительно хотите быть уверены, используйте регулярное выражение

i.e.

preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|',$subject,$match);
var_dump($match[1]);

Ваше здоровье

Ответ 3 · рейтинг 6 · David Z

Нет, вы никогда не встретите ответ (если это правильный ответ HTTP), который имеет другой формат. См. HTTP RFC (2616).

Ответ 4 · рейтинг 2 · Matthew Scharley

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

HTTP/1.1 404 Not Found

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы