不能安全统一管理所有链接跳转——它无差别作用于所有未显式声明target的和,包括站内链接;仅影响html解析阶段的这两类元素,对js跳转、iframe src等完全无效,且不自动添加rel="noopener noreferrer",存在安全风险。

<base> 的 target 属性**不能安全统一管理“所有链接跳转方式”**——它会无差别作用于所有未显式声明 target 的 @#@#@#@#@#@#@#@#@#@0 → 被弹出(本该同页)
@#@#@#@#@#@#@#@#@#@1 → 被弹出(符合预期)target 的 <a href="#"></a> → 也弹出,可能破坏折叠菜单逻辑<base target> 支持不一致,行为不可靠真正可控的外链新窗口方案
只对明确是外链(协议开头)的 <a></a> 手动加 target 和 rel,不依赖 <base>:
- 用 CSS 选择器精准定位:
document.querySelectorAll('a[href^="http"]:not([href^="' + location.origin + '"])') - 补全属性:
a.target = '_blank'; a.rel = 'noopener noreferrer'; - 如果必须用
<base target>,仅限纯静态页面、且确认所有链接都应同行为(如营销落地页),并额外用 JS 补上rel:
document.querySelectorAll('a[href^="http"]').forEach(a => {
if (!a.hasAttribute('rel')) {
a.rel = 'noopener noreferrer';
}
});
<base target> 不影响哪些跳转
它只管 HTML 解析阶段的 <a></a> 和 <form></form>,对运行时行为完全无效:
-
window.location.href = 'success.html'→ 不受控 -
history.pushState()或前端路由跳转 → 不受控 -
<iframe src="page.html"></iframe>→src解析基准是 iframe 自身 URL,不是主页面<base> -
<a href="/admin/"></a>(根相对路径)→ 不受target影响,但它的解析基准仍由<base href>控制(如果存在)
最常被忽略的一点:<base target> 不会自动加 rel="noopener",而缺失它会让新开页面通过 window.opener 操控原页面——这是真实的安全漏洞,不是理论风险。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











