我需要在服务器中间件上使用url(使用express.js)。我使用req.url
,但当网址从/#some/url
开始时,req.url会返回/
...
与req.path
..
有没有办法在express.js中找到#
后的网址?
答案 0 :(得分:18)
否。以#
符号开头的网址部分永远不会发送到服务器。
网址中的#
符号是引入fragment identifier。这用于链接到页面的特定部分。如果浏览器加载/#some/url
,它将有效加载/
,并跳转到包含id="some/url"
的HTML元素(如果存在)。片段标识符仅与浏览器相关,因此不会随HTTP请求一起发送。
答案 1 :(得分:0)
浏览器将删除 URL 中 #(哈希符号)之后的任何路径/查询参数。
通过在 HTML/EJS 文件的脚本标签中用 EMPTY 字符串替换散列,这可以通过一个小技巧来处理,这将删除散列并将整个 URL 传递给服务器。
如果是服务器端呈现的应用程序,在 404 中应用上述技术会将重定向路由回有效的路由器。
<script>
const hash = window.location.hash;
if(hash.length > 0 && hash.includes("#/")) {
window.location.replace(window.location.href.replace('#/',''));
}
</script>
这在我的应用程序中运行良好。感谢我的队友修复此问题。
答案 2 :(得分:-1)