13

标题是不言自明的。

我对 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

或者它是否以其他方式工作?

4

1 回答 1

19

header()确实忽略了输出缓冲。使用输出缓冲的部分原因是您可以“乱序”发送 HTTP 标头,因为响应已被缓冲。一旦您发送了任何类型的输出(除非该输出被缓冲),您就不能发送 HTTP 标头。

于 2010-06-24T15:03:16.400 回答