[英]get url after “#” in express.js middleware request
我需要在服务器中间件上获取 url(使用 express.js)。 我使用req.url
但是当 url 从/#some/url
req.url 开始返回/
...
与req.path
相同..
有没有办法在express.js中#
之后获取url?
号开始与URL的一部分#
符号永远不会发送到服务器。
URL 中的#
符号用于引入片段标识符。 这用于链接到页面的特定部分。 如果浏览器加载/#some/url
,它将有效地加载/
,并跳转到id="some/url"
的 HTML 元素(如果存在)。 片段标识符仅与浏览器相关,因此不会与 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>
这在我的应用程序中运行良好。 感谢我的队友进行此修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.