<?
echo "lalala";
header("Location: http://www.google.com/");如果我把它放在一个普通的php文件中,并通过一个带有mod-php (PHP version5.3.2-1ubuntu4.10)的标准apache2服务器,重定向到google works。
<?
echo "lalala";
flush();
header("Location: http://www.google.com/");这段代码显然不会产生一个有效的重定向。
我的问题是,第一个代码是如何处理的,为什么它会工作。因为我记得当时这样的事情是不可能的。mod-php或apache是否足够智能,能够缓冲整个请求并在内容之前安排头部?
和:
如果我确保不手动刷新输出,我可以依赖它吗?因为这会让我的申请变得更容易。
发布于 2011-10-29 04:10:05
默认情况下,输出缓冲可能已启用。如果您想要依赖此功能,则应手动启用它。
http://php.net/manual/en/function.ob-start.php
发布于 2011-10-29 04:12:08
header函数向http响应中添加一个HTTP公共标头。因此,重定向已设置,浏览器在向您显示输出之前会得到302消息。
flush命令php发送在它被调用时已经准备好的http响应。这就是为什么第二个代码不会设置头部(它必须在发送任何输出之前设置)。
而且,PHP不应该输出任何内容,直到:
()将输出发送到脚本中的某个位置
最后,在输出控制http://www.php.net/manual/en/intro.outcontrol.php上进行检查
https://stackoverflow.com/questions/7934351
复制相似问题