php - 为什么我应该在调用Location:header之后调用exit()?

时间:2017-06-28 05:35:45

标签: php redirect http-headers

Stack Over Flow中有许多类似的问题,如php - Should I call exit() after calling Location: header?do i need to use exit after header("Location: http://localhost/...");?

他们有如下答案。

  

你绝对应该。否则脚本执行不是   终止。单独设置另一个标头不足以重定向。

-

  

你应该调用exit(),因为header()不会自动停止   来自执行的脚本 - 或者如果它(我老实说不是100%),   它肯定不会立即停止剧本。

但我无法理解有人跳过或绕过像header('Location: http://www.example.com/login.php')这样的代码?怎么有人这样做?因为这是一个PHP代码。此代码在服务器中运行。如果有人可以跳过/绕过此代码,为什么他们也不能跳过/绕过exit()

1 个答案:

答案 0 :(得分:3)

标题只是一行数据,要求浏览器重定向。页面的其余部分仍然由PHP提供,客户端可以通过简单地阻止执行header命令来查看。

如果你没有阻止它,即使在标题调用之后,PHP也会发送出整个身体。该机构完全可供收件人使用。