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