首页 > 解决方案 > 查询参数包括#, Javascript (Node) 错误输出

问题描述

为了简单起见,我正在使用 Firebase Cloud Functions,当/如果我收到包含 # 的参数时,它无法识别它。

例如:http://example.net?id=123#456。如果我登录id,我只会得到 123。

但是,如果我做类似的事情http://example.net?id=123456,一切都会被记录下来。

如何在字符串值中包含 # 符号id

更好的细节:

网址:http ://example.com?item=2019+#157&typeOfListing=sold

如果我对请求查询进行编码

let item = encodeURIComponent(req.query.item);

我会得到以下信息:

2019%20

它不带#。

标签: javascriptnode.js

解决方案


这是因为#是 url 中的一个特殊字符(就像/, :, ?, ... are),它用于表示 url 的片段部分。您需要encodeURIComponent像这样使用它来逃避它:

let idParam = encodeURIComponent("123#456");
let url = "http://example.net?id=" + idParam;

推荐阅读