我需要在服务器中间件上获取 url(使用 express.js)。我使用req.url
但是当 url 从/#some/url
req.url 开始时返回/
......
与req.path
..
有没有办法#
在 express.js 之后获取 url?
我需要在服务器中间件上获取 url(使用 express.js)。我使用req.url
但是当 url 从/#some/url
req.url 开始时返回/
......
与req.path
..
有没有办法#
在 express.js 之后获取 url?
不会。以符号开头的 URL 部分#
永远不会发送到服务器。
URL 中的#
符号是引入片段标识符。这用于链接到页面的特定部分。如果浏览器加载/#some/url
,它将有效地加载,并跳转到带有(如果存在)/
的 HTML 元素。id="some/url"
片段标识符仅与浏览器相关,因此不会随 HTTP 请求一起发送。
但是,您可以做的是使用客户端 Javascript 读取值window.location.hash
并使用 XMLHttpRequest 将其发送到服务器。(请参阅其他 Stack Overflow 帖子。)
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>
这在我的应用程序中运行良好。感谢我的队友对此进行了修复。