以下是代码:
var url = require('url');
console.log(url.parse('localhost:3000'));
输出结果如下:
{ protocol: 'localhost:',
host: '3000',
hostname: '3000',
href: 'localhost:3000' }
非常奇怪。我想这是因为开头没有'http'。对于这种情况,我期待的是:
{ port: '3000',
host: 'localhost',
hostname: 'localhost',
href: 'localhost:3000' }
任何第三方好的图书馆或建议来实现这一目标?
答案 0 :(得分:1)
严格来说,传入的内容不是有效的网址。根据RFC 3986,方案不是可选的:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty
话虽如此,当然Node.js可能会在这种情况下警告无效的URL。
在我看来,在这样一个微不足道的情况下,在将其传递给解析器之前,最好先编写几行代码来修复URL,而不是搜索额外的库。
此外,在这种特殊情况下,完全基于上述定义,解析器完全有理由将localhost理解为方案,而不是主机。