You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中URL对象能否解析纯长数字域名的URL?

为什么new URL('http://12345678901')构造不出来合法URL?

这不是浏览器bug,是URL规范里的解析规则在起作用——

关键原因:纯数字主机被优先解析为IP地址

当URL里的主机部分是纯数字字符串时,浏览器会先尝试把它当成IPv4地址来解析。IPv4地址是32位的,最大只能到4294967296。而12345678901这个数远大于这个值,没法转成合法的IPv4地址,又不符合IPv6的格式,所以直接被判无效。

反观http://1234567890,这个10位数字是1234567890,小于4294967296,虽然它不是常见的点分十进制格式,但规范允许把纯数字当成32位整数形式的IPv4(比如http://1234其实对应http://0.0.4.210),所以能正常解析。

要是主机里带字母,比如a12345678901,浏览器就会把它当成域名处理,只要格式没毛病(长度也在允许范围内),就能顺利构造URL对象。

代码示例

能正常运行的代码

console.log(new URL(`http://1234567890`))
console.log(new URL(`http://a12345678901`))

运行报错的代码

console.log(new URL(`http://12345678901`))

浏览器报错信息

  • Chrome:

    VM2064:1 Uncaught TypeError: Failed to construct 'URL': Invalid URL at :1:1 (anonymous) @ VM2064:1

  • Firefox:

    Uncaught TypeError: URL constructor: http://12345678901 is not a valid URL.
    debugger eval code:1
    debugger eval code:1:1
    debugger eval code:1

内容的提问来源于stack exchange,提问作者urlencode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:41:17