expressjs:获取请求的url

我想从请求中获取客户端请求的url。

目前我使用:

var requestedUrl = req.protocol + '://' + req.host + ':3000' + req.url; 

这根本不好。 它也遗漏了我需要的URL片段(#/东西)。

有没有办法我可以得到完整的url? 也许出了标题?

问候

       

网上收集的解决方案 "expressjs:获取请求的url"

你不能得到服务器上一个URL的片段(哈希部分),它不会被浏览器传送。

片段标识符的function与URI的其余部分不同:即,它的处理仅仅是客户端,没有来自服务器的参与 – 当然,服务器通常有助于确定MIMEtypes,而MIMEtypes决定片段的处理。 代理(如Web浏览器)从Web服务器请求资源时,代理将URI发送到服务器,但不发送片段。 代理程序等待服务器发送资源,然后代理程序根据文档types和片段值处理资源。

从维基百科的片段标识符

如果你想获得完整的URL(没有fragement标识符),最好的办法是使用包含端口而不是req.host的“Host”头,但是与你现在正在做的一样:

 var requestedUrl = req.protocol + '://' + req.get('Host') + req.url; 

恐怕你所能做的几乎都是。 除非您使用https,否则您可以将协议假定为http。 正如Raoul所说,在服务器端不能获得任何东西,这是针对浏览器的

  var requestedUrl = 'http://' + req.headers.host + ':3000' + req.url 

我经常把这样的东西添加到我的快速应用程序:

  app.use(function(req, res, next) { req.getRoot = function() { return req.protocol + "://" + req.get('host'); } return next(); }); 

现在你有一个function,你可以根据需要调用,如果你需要它。

这是你要找的吗?

 req._parsedUrl.pathname 

你应该,如果你还没有使用:

 var util = require('util'); // core module console.log(util.inspect(req)); 

debugging找出那种数据。