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

时间:2011-02-24 02:57:58

标签: javascript node.js encode

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

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f"

我收到错误,因为它在以后的所有内容中存在:

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-

我想知道如何对这个字符串进行编码,这样它就不会将其删除?

3 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:1)

urlencode it。

在Javascript中:escape(string)

答案 2 :(得分:0)

使用encodeURIComponent就像赫斯基在评论中提到的那样。

?key=encodeURIComponent(https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f)