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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在express.js中间件请求中获取“#”之后的url相关的知识,希望对你有一定的参考价值。

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

req.path相同..

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

答案

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

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

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

另一答案

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

const url = require('url')
const urlObj = url.parse(req.url)
console.log(urlObj.hash) // #some/url

以上是关于在express.js中间件请求中获取“#”之后的url的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Express.js 中强制 SSL / https

无法使用 Express.js 从请求中获取 POST 正文

nodejs篇 express 中间件详解

无法在express.js中获取所请求的API

每次在 Node.js (Express.js) 中发出 API 请求之前,如何简化 Fetching Auth token?

在 Express 中 next() 接受啥参数