NodeJS URL解析结果错误

时间:2016-02-06 05:53:22

标签: node.js parsing url

以下是代码:

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' }

任何第三方好的图书馆或建议来实现这一目标?

1 个答案:

答案 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理解为方案,而不是主机。