Как заголовки работают с буферизацией вывода в PHP?


Название не требует пояснений.

У меня есть хороший опыт работы с PHP, но я не уверен, как функция header работает между ob_start() и ob_end_clean().

Подумайте об этом:

ob_start();

echo "Some content";
header('X-Example-Header: foo');
echo "Some more content";

$output = ob_get_contents();
ob_end_clean();

echo $output;

Игнорирует ли функция header буферизацию вывода, и, следовательно, все заголовки отправляются до содержимого, потому что оно echoредактируется после вызова header?

Или это работает каким-то другим способом?

Author: Austin Hyde, 2010-06-24

1 answers

header() действительно игнорирует буферизацию вывода. Одна из причин использования буферизации вывода заключается в том, что вы можете отправлять HTTP-заголовки "не по порядку", поскольку ответ буферизован. Вы не можете отправлять HTTP-заголовки после отправки какого-либо вывода (если только этот вывод не буферизован).

 15
Author: cletus, 2010-06-24 15:03:16