在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 正文
每次在 Node.js (Express.js) 中发出 API 请求之前,如何简化 Fetching Auth token?