如何传递包含散列的URI作为路由参数来表达?

时间:2019-06-28 17:11:25

标签: javascript node.js express

我的快递申请中有以下路线:

app.get('/api/:URI', (req, res) => {
  doStuff();
}

传递的URI参数是在客户端使用encodeURIComponent()

编码的URI。

除了URI包含哈希值之外,它都可以正常工作。
示例:http://foo.bar/foobar/bla#blabla-313fe4ce-4f8d-48b7-b0f3-a59844402ee8
在这种情况下,该路线将被忽略。

在浏览器端,我收到一个代码301,然后是下一条有效路由的结果。

如果我删除哈希值,或者更奇怪的是,如果我在浏览器端禁用了缓存,则它可以正常工作。

有什么表达可以忽略哈希的方法吗?

编辑:这绝对不是Can I use an at symbol (@) inside URLs?的副本,问题更多是关于快速路由和/或浏览器缓存问题,而不是URL中允许的字符。

1 个答案:

答案 0 :(得分:0)

有什么表达可以忽略哈希的方法吗?

我尝试使用OR运算符。例如,

    app.get('/blog' || '/blog#top', (request, response) => {
      ...
    });

因此,即使存在#top,它也可以正常工作。