在 JavaScript 中,你可以使用不同的方法获取当前 URL 和来源 URL(Referrer URL)。
获取当前 URL:
window.location.href
: 返回完整的 URL,包括协议、域名、路径、查询参数和哈希。这是最常用的方法。window.location.origin
: 返回 URL 的 origin 部分,包括协议、域名和端口。window.location.pathname
: 返回 URL 的路径部分。window.location.search
: 返回 URL 的查询字符串部分(问号之后的部分)。window.location.hash
: 返回 URL 的哈希部分(井号之后的部分)。
获取来源 URL (Referrer URL):
document.referrer
: 返回当前页面的来源 URL。如果用户直接输入 URL 访问当前页面,或者从书签、浏览器历史记录或 PDF 文件中打开页面,则document.referrer
将为空字符串。 需要注意的是,由于隐私和安全原因,浏览器对 referrer 信息的处理方式可能有所不同,有时可能无法获取到完整的 referrer URL,甚至可能为空。
示例:
// 获取当前 URL
const currentURL = window.location.href;
console.log("Current URL:", currentURL);
const currentOrigin = window.location.origin;
console.log("Current Origin:", currentOrigin);
const currentPathname = window.location.pathname;
console.log("Current Pathname:", currentPathname);
const currentSearch = window.location.search;
console.log("Current Search:", currentSearch);
const currentHash = window.location.hash;
console.log("Current Hash:", currentHash);
// 获取来源 URL
const referrerURL = document.referrer;
console.log("Referrer URL:", referrerURL);
// 一个更健壮的获取 referrer URL 的方法,处理空值:
const getReferrer = () => {
return document.referrer || null; // 或返回其他默认值,例如 ""
}
const referrer = getReferrer();
console.log("Referrer (with handling for null):", referrer);
// 解析查询参数
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');
console.log("Value of 'myParam':", myParam);
跨域问题:
由于浏览器的同源策略,获取跨域 referrer URL 时可能会受到限制。 浏览器可能会将 referrer 信息设置为不完整或为空,以保护用户隐私。 具体行为取决于浏览器和服务器的配置。 例如,如果从 HTTPS 页面跳转到 HTTP 页面,referrer 信息可能会被省略或设置为仅包含 origin 部分。
总结:
使用 window.location
对象可以方便地获取当前 URL 的各个部分,而 document.referrer
可以获取来源 URL。 但在处理 referrer 信息时,需要注意跨域问题和浏览器行为的差异。 建议使用更健壮的代码来处理可能为空的 referrer 值。