在express.js中间件请求中获取“#”之后的url

问题描述 投票:18回答:2

我需要在服务器中间件上获取URL(使用express.js)。我使用req.url,但当url从/#some/url req.url开始返回时/ ...

req.path相同..

有没有办法在express.js中的#之后获取网址?

javascript url hash express request
2个回答
16
投票

不会。以#符号开头的URL部分永远不会发送到服务器。

URL中的#符号用于引入fragment identifier。这用于链接到页面的特定部分。如果浏览器加载/#some/url,它将有效加载/,并跳转到id="some/url"(如果存在)的HTML元素。片段标识符仅与浏览器相关,因此不会随HTTP请求一起发送。

然而你可以做的是使用客户端Javascript来读出window.location.hash的值并使用XMLHttpRequest将其发送到服务器。 (See other Stack Overflow post.


-1
投票

使用Node.js中提供的内置url module来解析URL并创建一个urlObject。这将有一个包含所需哈希片段的hash片段属性。

const url = require('url')
const urlObj = url.parse(req.url)
console.log(urlObj.hash) // #some/url
© www.soinside.com 2019 - 2024. All rights reserved.