假设我的示例网址是
http://example.com/one/two
我说我有以下路线
app.get('/one/two', function (req, res) { var url = req.url; }
值url将是/one/two。
url
/one/two
如何在Express中获取 完整的URL ?例如,在上述情况下,我想收到http://example.com/one/two。
该协议可从下载req.protocol。这里的文档
req.protocol
http
req.get('X-Forwarded-Protocol')
https
req.get('host')
希望您的URL中不需要非标准端口,但是如果您确实需要知道它,则可以在应用程序状态下使用它,因为它是app.listen在服务器启动时传递给您的。但是,在使用非标准端口进行本地开发的情况下,Chrome似乎将端口包含在主机标头中,因此例如req.get('host')返回localhost:3000。因此,至少对于在标准端口上的生产站点并直接浏览到快速应用程序(没有反向代理)的情况,host标头似乎对URL中的端口做了正确的处理。
app.listen
localhost:3000
host
路径来自req.originalUrl(感谢@pgrassant)。请注意,此DOES包含查询字符串。此处的文档位于req.url和req.originalUrl。根据您打算对URL originalUrl进行的处理,与相比,该值可能是正确的值,也可能不是正确的值req.url。
req.originalUrl
originalUrl
req.url
将所有内容组合在一起以重建绝对URL。
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;