superagent 的编码问题

cyb*_*bat 5 javascript node.js superagent

我正在尝试使用 superagent 执行 API 调用,但它对我的 api 密钥进行编码,但被拒绝。

get(url).query({ key: 'Fmjtd%7Cluu').end(function(err, res) {
Run Code Online (Sandbox Code Playgroud)

密钥发送为

Fmjtd%257Cluu
Run Code Online (Sandbox Code Playgroud)

有什么想法如何使用超级代理来防止这种情况吗?如果我将其作为“url”部分的一部分,那就没问题,但如果可能的话,我想将其作为查询数据传递。

tak*_*ola 0

我不熟悉 SuperAgent,但以下是我用来解决问题的选项。

  1. 逃离钥匙。尝试“Fmjtd\%7Cluu”

  2. 由于 SuperAgent 似乎正在应用“encodeURIComponent”来转换密钥以使其对于 http 传输安全,因此您可以在传递它之前先对其进行“decodeURIComponent”。然而,这很可能会破坏 SuperAgent(因为他们可能有充分的理由对 URI 组件进行编码)。

  3. 发送错误报告并让维护人员创建适当的修复程序,而不是我上面建议的黑客攻击