PHP的header函数头部输出的问题解析

<?php
/*
 header('Location : http://segmentfault.com/');这个方法,是在响应头里面,发一个302重定向。而响应头当然要比响应主体要提前输出。
 */
echo "<html></html>";
header('location:http://www.baidu.com');
/*但是运行以上发现成功跳转名,是因为这种并不符合HTTP规范的HTTP头,很可能整个HTTP Response都无法解析。
幸运的是,PHP貌似为你修复了这个HTTP头格式问题。
关于HTTP头先发的问题,的确不应该在HTTP内容输出之后输出HTTP头。但是服务器会缓存输出,虽然你使用了echo或者print,但在那个时刻服务器还没有将这些内容作为HTTP报文输出,这个时候你仍然有机会修改HTTP头。
如果你只是单纯想要引发一个错误的话,参考例2
*/

//例2
echo "<html></html>";
ob_flush();#输出缓冲区中的内容
flush();#刷新缓冲区,函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和 flush() 函数来刷新输出缓冲
// We'll be outputting a PDF
header('location:http://www.baidu.com');
?>

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。