HTML5不提供URL跳转校验,必须用JavaScript拦截跳转并校验:优先用URL构造函数解析,检查protocol和hostname是否在白名单内;禁用javascript:、data:等危险协议;location.href和标签跳转前均需主动校验。

HTML5 本身不提供跳转地址的正则校验能力,所有校验必须由 JavaScript 主动执行;直接用 真正难的不是写正则,而是定义清楚「合法」范围——协议、域名、路径层级、是否允许 query 参数,这些都要结合业务定死。一个没覆盖的 location.href 或
URL,然后在 http:// 里做校验和跳转https://
javascript:alert(1) 值,服务端渲染时也应做过滤,前端校验只是最后一道防线data:text/html, 或 URL 就可能让 XSS 绕过内网防护。function isValidRedirect(urlStr) {
try {
const url = new URL(urlStr);
return ['http:', 'https:'].includes(url.protocol) &&
['example.com', 'api.example.com'].includes(url.hostname);
} catch {
return false;
}
}











