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

发布于 2024-12-04 20:45:17 字数 398 浏览 1 评论 0原文

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

脚本: echo("");

标题: header("Location: $next_url");

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

我有一个基本的感觉,即标头方法更像是对另一个页面进行干净刷新的“硬”调用,而脚本方法更接近于“软”调用(如 Ajax),可以在页面之上和之内工作。进行调用的现有页面。

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

Facebook examples show two different methods for redirecting a user's browser.

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

Header:
header("Location: $next_url");

I have noticed some differences in behavior between them, but do not have enough knowledge of HTTP theory to understand these differences and know which one to use for different cases.

I have a basic sense that the header approach is more of a "hard" call to another page with a clean refresh, and the script approach is closer to a "soft" call (like Ajax) that may work on top of and within the existing page that makes the call.

Can someone give (or point me to) a good explanation of the differences between them, with examples of suitable use cases for each approach? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红尘作伴 2024-12-11 20:45:17

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

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

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

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

This probably has a duplicate somewhere, but I can't find it right now so...

A header() redirect takes place before any page data is output. As the name says, the browser makes a request for a page, and the page's response headers contain the instruction to go to a different address. The browser will usually immediately do so.

A JavaScript redirect takes place inside an already loaded page.

If at all possible, you want to use a header redirect because it makes the browser go to the new resource straight away, without having to render the intermittent page first. Also, it works for clients that have no JavaScript enabled.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文