使用HTTP请求编码字符串以进行发送?

ajs*_*sie 0 javascript encode node.js

我在Javascript/Node.js上,当我使用此查询参数发出HTTP请求时:

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,因为它之后的所有商品:

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-
Run Code Online (Sandbox Code Playgroud)

我想知道我怎么能编码这个字符串所以它不会砍掉它?

ide*_*ide 8

我假设您URL的末尾的哈希(#)实际上是查询参数的一部分.问题是Node.js将其视为整个URL的哈希值,它在HTTP请求中不起作用.因此,您需要正确编码查询字符串.

结构化的API函数querystring.stringify可能是最好的.

var query = querystring.stringify({
  key: '"https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f"'
});
Run Code Online (Sandbox Code Playgroud)

  • 也许你可以尝试:?key ="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-"+ encodeURIComponent("#a6e6f"); ? (2认同)