首页 > 解决方案 > 如何将包含哈希的 URI 作为路由参数传递来表达?

问题描述

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

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

传递的 URI 参数是在客户端编码的 URIencodeURIComponent()

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

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

如果我删除哈希,或者更奇怪的是,如果我在浏览器端禁用缓存,它会完美运行。

有什么办法 express 可以忽略散列?

编辑:这绝对不是我可以在 URL 中使用 at 符号 (@) 吗?重复,问题更多是关于快速路由和/或浏览器缓存问题,而不是关于 URL 中允许的字符。

标签: javascriptnode.jsexpress

解决方案


有什么办法 express 可以忽略散列?

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

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

因此,无论是否#top存在,它都有效。


推荐阅读