标题如何在PHP中与输出缓冲一起使用?

Aus*_*yde 11 php header output-buffering

标题是不言自明的.

我对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;
Run Code Online (Sandbox Code Playgroud)

header函数是否忽略输出缓冲,因此所有标题都在内容之前发送,因为它是echoheader调用之后编辑的?

或者它以其他方式工作?

cle*_*tus 17

header()确实忽略输出缓冲.使用输出缓冲的部分原因是,因为响应被缓冲,所以您可以"乱序"发送HTTP标头.一旦发送任何类型的输出,您就无法发送HTTP标头(除非该输出被缓冲).