PHP 中的标头如何与输出缓冲一起使用?

发布于 2024-09-06 21:01:26 字数 459 浏览 3 评论 0原文

标题是不言自明的。

我对 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 echoed after the header call?

Or does it work some other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲歌长辞 2024-09-13 21:01:26

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文