我在 PHP 中有一个函数,如果用户没有登录,它会重定向到登录页面。它看起来类似于这样:
function requireLogin() {
if (!isLoggedIn) {
$loginUrl = "https://host.com/login.php?forward_url=/dir/page.php";
header("location: $loginUrl");
die();
}
}
为简单起见,此函数在page.php
位于 中的 PHP 脚本中调用dir
。
现在我的浏览器(Chrome、Firefox 和 IE)正在做的是将地址栏中可见的 URL 重新格式化为:
https://host.com/login.php?forward_url=https%3A%2F%2Fhost.com%2Fdir%2Fpage.php
好吧,我知道 URL 参数将被编码,但我不明白的是为什么浏览器要为参数添加前缀forward_url
,即方案和主机。
顺便说一句,浏览器接收到的标头中的位置字段确实达到了正确的值。