繁体   English   中英

PHP标头位置与JavaScript重定向

[英]PHP Header location vs JavaScript Redirect

我目前正在为我的学士学位论文开发一个网站,并且根据我以前的经验,错误地使用了header('Location: http://www.example.com/'); 有时可能会变得非常凌乱。

我的问题是:何时或如何使用header('Location: http://www.example.com/');很好header('Location: http://www.example.com/'); 与使用window.location.replace("http://stackoverflow.com");

一个例子:假设我们有一个注册脚本,完成后,它将把用户重定向到index.php 哪种更好,如何使用?

我个人总是建议通过JS重定向PHP重定向。

归因于PHP重定向的混乱情况,我相信只有在您此后忽略立即终止脚本,或者您允许在发出标头之前进行输出时,才会发生这种情况。 后者是您需要解决的问题,但前者:

header('Location: http://www.example.com/');
exit;

很容易解决。

JavaScript重定向为您的服务器和访问者提供了大量工作:整个页面必须由您的服务器构建并发送给您的用户。 浏览器将在重定向命中之前开始下载链接的图像,脚本和样式表。 最重要的是,您希望希望您的访客没有禁用JavaScript。

TL; DR:PHP更快,消耗更少的服务器资源和带宽

这取决于实现注册的方式,如果您使用典型的形式将用户的凭据发送到服务器,那么在身份验证之后,您应该使用PHP标头Location。

如果您通过JavaScript将用户的凭据发送到api,则api将对其进行身份验证并发送回json数据响应,在这种情况下,请使用JavaScript重定向。

当JS关闭时,第一种情况将失败。 由于必须首先解析JS(必须加载DOM),所以它也有点慢。 但是,JS更安全,因为目标位置不知道引荐来源网址,并且您的重定向可能会被跟踪(引荐来源网址通常不可靠,但这是必须的)。

所有选项的结果都是相同的(标头位置与JavaScript重定向): 在html页面中:

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

在JS上

  • 需要启用Javascript

  • 不需要PHP。

  • 显示您网站的内容,并在几秒钟(或0秒)后再次重定向用户。

在PHP中:重定向将首先执行,用户之后将再也看不到。 header()必须是php脚本中的第一个命令,然后再输出其他命令。 如果您尝试在标头之前输出一些内容,将会收到警告:无法修改标头信息-标头已发送

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM