window.location(JS)vs header()(PHP)用于重定向

时间:2013-03-27 09:02:44

标签: php javascript redirect meta

使用JS:(在<head>标记中)

<script>window.location="https://stackoverflow.com";</script>

使用PHP:(在<head>标记中)

header('Location: https://stackoverflow.com');
end();

我应该使用哪一个?或另一个?

如何使用 <meta>

<meta http-equiv="refresh" content="0;url=https://stackoverflow.com"/> 

许多好的答案,我不知道我会接受哪个答案,非常感谢

5 个答案:

答案 0 :(得分:17)

所有选项的结果都相同。重定向。

HTML中的

<meta>

  • 显示您网站的内容,然后在几(或0)秒后重定向用户。
  • 不需要启用JavaScript。
  • 不需要PHP。
JS中的

window.location

  • 需要启用Javascript。
  • 不需要PHP。
  • 显示您网站的内容,然后在几(或0)秒后重定向用户。
  • 重定向可以取决于任何条件if (1 === 1) { window.location.href = 'http://example.com'; }
PHP中的

header('Location:')

  • 不需要启用JavaScript。
  • PHP需要。
  • 首先执行重定向,用户永远不会看到后面的内容。在输出任何其他命令之前,header()必须是php脚本中的第一个命令。如果您尝试在标题之前输出一些,则会收到Warning: Cannot modify header information - headers already sent

答案 1 :(得分:11)

在JS中设置位置的更好方法是:

window.location.href = 'https://stackoverflow.com';

是否使用PHP或JS来管理重定向取决于您的代码正在做什么以及如何做。但是如果你能够使用PHP;也就是说,如果您要使用PHP将一些JS代码发送回浏览器,只是告诉浏览器去其他地方,那么逻辑建议您应该删除中间人并直接通过PHP告诉浏览器。

答案 2 :(得分:8)

这取决于您希望将用户重定向到另一个页面的方式和时间。

如果您希望立即将用户重定向到另一个页面,而不让他看到任何网站,则应使用PHP header重定向方法。

如果你有一个Javascript并且用户的某些操作必须导致他进入另一个页面,那就是你应该使用window.location

每当您看到“您的下载应该自动启动”消息时,meta标记刷新通常会在下载网站上使用。您可以让用户加载页面,等待一段时间,然后重定向他(例如,转移到要下载的文件),而不使用Javascript。

答案 3 :(得分:3)

PHP重定向更好,如果您可以使用JavaScript导致客户端在重定向之前加载页面,而使用PHP重定向则发送正确的标头。

然而,PHP不应该进入&lt; head&gt;,它应该在任何输出发送到客户端之前进行,否则会导致错误。

使用&lt; meta&gt;标签与Javascript具有相同的问题,导致在执行重定向之前加载初始页面。如果您可以使用它们,服务器端重定向几乎总是更好。

答案 4 :(得分:2)

当JS关闭时,第一种情况将失败。它也有点慢,因为必须首先解析JS(必须加载DOM)。但是JS更安全,因为目的地不知道引用并且您的重定向可能被跟踪(引用一般不可靠但这是事情)。

您还可以使用meta refresh标记。它还需要加载DOM。