我目前正在重写网站的前端,目的是使用类似于facebook的bigpipe内容呈现(在指定优先级的区域之后刷新区域)
我已经完成了这个,没关系,但遗憾的是,由于刷新了一个又一个区域和新的渲染顺序,我回显内容并在脚本中间调用的标题不会被发送。
所以,要把它作为一个具体的例子:我刷新一些内容后如何发送标题?一个简单的代码:
echo $layout;
ob_flush();
header("Location: http://www.google.com");
不幸的是我不能使用像
这样的东西if(headers_sent()) {
// use javascript redirect
}
因为有时会有非重定向标题,并且网站中有1000个重定向(是的,它很大)。
我可以以某种方式在刷新后发送标题吗?或以某种方式启动缓冲区,冲洗它,清空它,然后发送标题 - >这将是最好的解决方案。
也许有人可以指出我正确的方向,这很烦人。
答案 0 :(得分:1)
您必须在向浏览器发送任何内容之前发送标题,这样您就可以像在第一个示例中那样执行此操作。
另外,请查看headers_sent()
手册页。它没有说'#34;某些标题已发送",它表示"所有标题都已发送,您无法再发送"。使用该功能,您可以检查是否可以进行Location
重定向,或者是否必须通过JavaScript进行重定向。