gpt4 book ai didi

node.js - 如何在 Express 中获取完整的 URL?

转载 作者:IT老高 更新时间:2023-10-28 21:44:25 25 4
gpt4 key购买 nike

假设我的示例网址是

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

最佳答案

  1. 协议(protocol)以 req.protocol 的形式提供。 docs here

    1. 在 express 3.0 之前,您可以假定协议(protocol)为 http,除非您看到 req.get('X-Forwarded-Protocol') 已设置并且具有value https,在这种情况下你知道这是你的协议(protocol)
  2. 如 Gopal 所示,主机来自 req.get('host')

  3. 希望你的 URL 中不需要非标准端口,但如果你确实需要知道它,你会在你的应用程序状态中拥有它,因为它是你传递给 app.listen 的任何东西 在服务器启动时。但是,在非标准端口上进行本地开发的情况下,Chrome 似乎将端口包含在主机 header 中,因此 req.get('host') 返回 localhost:3000,例如。因此,至少对于标准端口上的生产站点并直接浏览到您的快速应用程序(没有反向代理)的情况,host header 似乎对 URL 中的端口做了正确的事情。

  4. 路径来自 req.originalUrl(感谢@pgrassant)。请注意,这确实包括查询字符串。 docs here on req.url and req.originalUrl .根据您打算对 URL 执行的操作,与 req.url 相比,originalUrl 可能是正确的值,也可能不是正确的值。

将所有这些组合在一起以重构绝对 URL。

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

关于node.js - 如何在 Express 中获取完整的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com