【问题标题】:Express Node.js get originalurl with special symbols "#"Express Node.js 获取带有特殊符号“#”的 originalurl
【发布时间】:2015-12-29 05:19:17
【问题描述】:

我有一个 GET REST 端点:

router.get('/test/*', function(req, res) {
    var test = req.originalUrl;
}

当我在其中输入“#”时,它不会返回完整的网址:

即:

/test/asf#23

我想要“asf#23”,但上面的代码只给了我“asf”。想法?

编辑: req.originalUrl、req.path、req.baseUrl、req.url 都返回相同的东西。还有其他想法吗?

编辑 2: 我完全无法控制客户端,我只需要打印出客户端尝试访问的 url。有没有办法解析它?

【问题讨论】:

  • 你试试req.path还是req.baseUrl

标签: node.js rest url express get


【解决方案1】:

这是因为哈希部分不被视为 URI 的一部分,因此根本不会传递给服务器。 例如,您可以通过请求 /test/asf?id=23 使其成为 URI 部分。在这种情况下,您将能够通过寻址req.query.id 获得此id

【讨论】:

  • 感谢分享,但是我无法更改客户端的uri模式,我只需要解析他们试图访问的内容,有什么办法吗?
  • 不,恐怕没有。再说一遍,这不是Express不支持,而是浏览器不通过。
【解决方案2】:

# 在 url 中使用是不安全的,猜测这就是它没有被解析的原因

【讨论】:

  • 感谢分享,但我无法更改客户端的uri模式,我只需要解析他们试图访问的内容,有什么办法吗?我确定“#”在 url 中并不少见,express 根本不支持它?
  • @user3586553 回答您的问题,我认为 express 不允许您从客户端向服务器发送锚点或锚点链接或 URL。见这里stackoverflow.com/questions/14885023/…
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2018-08-23
  • 2019-03-15
相关资源
最近更新 更多