可直接用 String.prototype.startsWith() 判断 URL 协议前缀,需注意大小写敏感、空值校验及类型保护,常见于外链安全性校验。

直接用 String.prototype.startsWith() 就能判断 URL 是否以 http://、https:// 或其他协议开头,它原生支持、语义清晰、兼容性好(ES6+ 环境基本都支持)。
基础用法:判断是否以某个协议开头
只需把 URL 字符串和目标协议前缀传入 startsWith() 方法:
-
"https://example.com".startsWith("https://")→true -
"http://api.test".startsWith("https://")→false -
"ftp://files.org".startsWith("ftp://")→true
注意大小写敏感,协议一般全小写
该方法默认区分大小写。虽然标准协议名是小写(如 https://),但实际 URL 可能出现大写(如 HTTPS://)。若需忽略大小写,可先转小写再判断:
url.toLowerCase().startsWith("https://")- 或更稳妥地:
url.startsWith("https://") || url.startsWith("HTTPS://")
处理可能为空或非字符串的情况
如果 url 可能是 null、undefined 或数字,调用 startsWith 会报错。建议加一层类型保护:
立即学习“Java免费学习笔记(深入)”;
typeof url === 'string' && url.startsWith("https://")- 或者用可选链 + 空值合并(仅限支持环境):
url?.startsWith?.("https://") ?? false
常见场景示例:校验跳转链接安全性
比如在前端做外链跳转前检查协议是否合法:
function isValidExternalUrl(url) {
if (typeof url !== 'string') return false;
return url.startsWith('https://') || url.startsWith('http://');
}
// 使用
isValidExternalUrl('https://google.com'); // true
isValidExternalUrl('javascript:alert(1)'); // false


















