gpt4 book ai didi

javascript - 为什么 Firebase 动态链接的 longDynamicLink 参数中链接中的编码空格字符 (%20) 更改为 %2B

转载 作者:行者123 更新时间:2023-12-05 07:20:09 25 4
gpt4 key购买 nike

我正在手动构建动态链接 url ( docs ),然后以符合 docs 的格式发送到 Firebase 动态链接 API被缩短。

我要缩短的网址中有一个空格字符。 url 在动态链接参数 longDynamicLink 中使用之前进行编码(按照 documentation 应该如此)。

我尝试发送“原始”未编码文本,使用 encodeURI() 编码,使用 encodeURIComponent() 编码

这是调用的示例代码

axios({
method: 'post',
url: "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=my-firebase-key",
headers: { 'Content-Type': 'application/json' },
data: {
longDynamicLink: "https://example.page.link/?link=http://example.com/?q%3Dabc%20def",
suffix: {
option: 'SHORT',
},
},
}).then(response => {
return response.data.shortLink;
// returned value is: https://example.page.link/?link=http://example.com/?q%3Dabc%2Bdef
});

无论我发送什么(空间编码为 %20 与否),firebase 始终将其视为 +(编码为 %2B) 并将其用于随后用于短网址的代码。

如果我提供 url http://example.com/?q=abc defhttp://example.com/?q=abc%20def ,缩短的 url https://example.page.link/XYZWhttps://example.page.link/?link=http://example.com/的别名?q%3Dabc%2Bdef 解析为 http://example.com/?q=abc+def(带加号,不是空格)。

为什么会这样?

之所以要问,是因为在我的例子中,空格和 + 之间存在区别,因为参数的值(“产品名称”)是由可以命名的用户提供的一个产品 name name 和第二个产品 name+name。然后缩短的 url 会发生冲突(因为 + 也被编码为 %2B)。

最佳答案

尝试解码参数。说:decodeURI(param.replace(/\+/g, '%20')) 其中 param 是参数的字符串。

关于javascript - 为什么 Firebase 动态链接的 longDynamicLink 参数中链接中的编码空格字符 (%20) 更改为 %2B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com