小编典典

如何在 Express 中获取完整的 URL?

all

假设我的示例网址是

http://example.com/one/two

我说我有以下路线

app.get('/one/two', function (req, res) {
    var url = req.url;
}

url的值为/one/two

如何在 Express 中获取 完整的 URL ? 例如,在上述情况下,我想收到http://example.com/one/two.


阅读 138

收藏
2022-03-06

共1个答案

小编典典

  1. 该协议可作为req.protocol. 文档在这里

    1. 在 express 3.0 之前,您可以假设的协议,http除非您看到它req.get('X-Forwarded-Protocol')已设置并具有 value https,在这种情况下您知道这是您的协议
    2. req.get('host')正如 Gopal 所指出的,主机来自
  2. 希望您的 URL 中不需要非标准端口,但如果您确实需要知道它,您将在您的应用程序状态中拥有它,因为它是您app.listen在服务器启动时传递给的任何内容。但是,在非标准端口上进行本地开发的情况下,Chrome 似乎将端口包含在主机标头中,因此req.get('host')返回localhost:3000,例如。因此,至少对于标准端口上的生产站点并直接浏览到您的快速应用程序(没有反向代理)的情况,host标题似乎对 URL 中的端口做了正确的事情。

  3. 路径来自req.originalUrl。请注意,这确实包括查询字符串。req.url 和 req.originalUrl 上的文档。根据您打算对 URL 执行的操作,originalUrlreq.url.

将这些组合在一起以重建绝对 URL。

  var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
2022-03-06