重定向:标题与脚本 - 它们有何不同?

时间:2011-09-16 16:56:21

标签: javascript http-headers

Facebook示例显示了两种不同的重定向用户浏览器的方法。

脚本: echo("<script> top.location.href='" . $next_url . "'</script>");

部首: header("Location: $next_url");

我注意到它们之间的行为存在一些差异,但是没有足够的HTTP理论知识来理解这些差异,并知道在不同情况下使用哪种差异。

我有一个基本的感觉,即标题方法更多是对另一个页面的“硬”调用,并且具有干净的刷新,并且脚本方法更接近于可以在其上工作的“软”调用(如Ajax)并且在现有的呼叫页面内。

有人可以给出(或指向我)对它们之间差异的一个很好的解释,并为每种方法提供合适的用例示例吗?谢谢!

1 个答案:

答案 0 :(得分:4)

这可能在某处有重复,但我现在找不到它......

在输出任何页面数据之前发生header()重定向。顾名思义,浏览器发出页面请求,页面的响应头包含转到不同地址的指令。浏览器通常会立即这样做。

JavaScript重定向发生在已加载的页面中。

如果可能的话,您希望使用标题重定向,因为它会使浏览器立即转到新资源,而不必首先渲染间歇性页面。此外,它适用于未启用JavaScript的客户端。