【问题标题】:ob_clean doesn't remove header [duplicate]ob_clean 不删除标题[重复]
【发布时间】:2020-06-05 07:51:27
【问题描述】:

我在 ob_start 和 ob_clean 之间使用了 header 重定向,但它仍然被重定向。

我只是想知道为什么 ob_clean() 不起作用。谢谢!

ob_start();
header("location:../index.html");
ob_clean()
ob_end()

【问题讨论】:

  • 输出缓冲区仅用于响应正文,而不是标头。

标签: php


【解决方案1】:

这是因为输出缓冲不影响标头。

ob_start 的手册说:

当输出缓冲处于活动状态时,脚本不会发送任何输出(标题除外)

(我的粗体字)。

因此ob_clean() 不会删除您创建的标头。

【讨论】:

  • 肯定会影响标题 ;) 你没试过吗? github.com/php/php-src/issues/7953
  • @Tim 听起来可能是 ob_gzhandler 影响了场景中的标头,而不是核心输出缓冲功能。您是否检查过浏览器在特定情况下实际收到的标头?我没有使用它,但根据php.net/manual/en/function.ob-gzhandler.php 听起来它可能会专门改变内容编码标头
  • 是的,我检查了标题。似乎该错误已被确认为 ob_gzhandler 的问题。这有点跑题了,所以我会在那里结束。谢谢回复。 :)
猜你喜欢
  • 2019-08-15
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
相关资源
最近更新 更多