node.js url.parse仅为主机和协议返回null

时间:2014-07-28 23:08:21

标签: node.js url

我刚开始使用node.js.根据{{​​3}} url_parts应该有密钥主机和协议。但是两者都只返回null。为什么?

我正在调用服务器 http://localhost:8181/test/?var=vartest

http.createServer(function(req, res) {
    var url_parts = url.parse(req.url,true);
    console.log(url_parts);
    ...
}.listen(8181);

和控制台日志:

{ protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?var=vartest',
  query: { var: 'vartet' },
  pathname: '/test/',
  path: '/test/?var=vartest',
  href: '/test/?var=vartest'
}

1 个答案:

答案 0 :(得分:6)

您可以使用此代码获得所需内容:

http.createServer(function(req, res) {
    var realUrl = (req.connection.encrypted ? 'https': 'http') + '://' + req.headers.host + req.url;
    var url_parts = url.parse(realUrl,true);
    console.log(url_parts);
    ...
}).listen(8181)

req.url只返回路径,您应该分别检测主机和协议。