假设我的示例网址是
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。请注意,这确实包括查询字符串。req.url 和 req.originalUrl 上的文档。根据您打算对 URL 执行的操作,originalUrl与req.url.
req.originalUrl
originalUrl
req.url
将这些组合在一起以重建绝对 URL。
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;