【问题标题】:How do headers work with output buffering in PHP?标头如何与 PHP 中的输出缓冲一起工作?
【发布时间】:2011-03-07 20:57:01
【问题描述】:

标题不言自明。

我对 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 调用之后echoed 的?

还是以其他方式起作用?

【问题讨论】:

  • (reference) ob_start — 此函数将打开输出缓冲。当输出缓冲处于活动状态时,脚本(除了标题)不会发送任何输出,而是将输出存储在内部缓冲区中。
  • 哦,嘿,我错过了。这应该教会我更仔细地阅读。谢谢,戈登。

标签: php header output-buffering


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多