Facebook示例显示了两种不同的重定向用户浏览器的方法。
脚本:
echo("<script> top.location.href='" . $next_url . "'</script>");
部首:
header("Location: $next_url");
我注意到它们之间的行为存在一些差异,但是没有足够的HTTP理论知识来理解这些差异,并知道在不同情况下使用哪种差异。
我有一个基本的感觉,即标题方法更多是对另一个页面的“硬”调用,并且具有干净的刷新,并且脚本方法更接近于可以在其上工作的“软”调用(如Ajax)并且在现有的呼叫页面内。
有人可以给出(或指向我)对它们之间差异的一个很好的解释,并为每种方法提供合适的用例示例吗?谢谢!
答案 0 :(得分:4)
这可能在某处有重复,但我现在找不到它......
在输出任何页面数据之前发生header()
重定向。顾名思义,浏览器发出页面请求,页面的响应头包含转到不同地址的指令。浏览器通常会立即这样做。
JavaScript重定向发生在已加载的页面中。
如果可能的话,您希望使用标题重定向,因为它会使浏览器立即转到新资源,而不必首先渲染间歇性页面。此外,它适用于未启用JavaScript的客户端。