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
函数是否会忽略输出缓冲,因此所有标头都会在内容之前发送,因为它是在 header
之后进行 echo
编辑的称呼?
或者它以其他方式起作用吗?
Title is self-explanatory.
I have a good bit of experience with PHP, but I am not sure how the header
function works between ob_start()
and ob_end_clean()
.
Consider this:
ob_start();
echo "Some content";
header('X-Example-Header: foo');
echo "Some more content";
$output = ob_get_contents();
ob_end_clean();
echo $output;
Does the header
function ignore the output buffering, and thus all headers get sent before the content because it is echo
ed after the header
call?
Or does it work some other way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
header() 确实忽略了输出缓冲。使用输出缓冲的部分原因是,由于响应已被缓冲,因此您可以“无序”发送 HTTP 标头。一旦发送了任何类型的输出(除非该输出被缓冲),您就无法发送 HTTP 标头。
The
header()
does indeed ignore output buffering. Part of the reason to use output buffering is so you can send HTTP headers "out of order" since the response is buffered. You can't send HTTP headers once you've sent any kind of output (unless that output is buffered).