CNode

NodeJS的QueryString的bug要怎么解决

Yyangff发布于13 年前最后回复13 年前4 回复5460 浏览0 收藏

我用了requestify,然后他用了QueryString来解析uri。 问题是这个解析器有一个bug。 我用他来请求百度的登录地址:

https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&class=login&tt=&logintype=dialogLogin&callback=biduapi

注意到参数中的?getapi了吗? 这个参数!!很重要所以说两边,他是?getapi后面没有=,也没有别的什么。 这是百度用来做router的。 然后在QueryString里面转一圈之后,直接变成了

path: '/v2/api/?getapi=&tpl=mn&apiver=v3&class=login&tt=&logintype=dialogLogin &callback=biduapi',

注意,getapi= 这里毫无原因的多了一个=,然后一直404 。

求个解决方案,毕竟我不想对nodejs的库做太多的修改……不然移植起来太坑爹了。

PS: 我现在用的是在Request.js的line161后面加一句

query = query.replace("=&","&");

这样的暴力方法。。

查看回复

回复 (4)

Y
yangff#1·13 年前

这是在发送请求啊亲。。哪里来的req

H
huanghaiyang#2·13 年前

?getapi 这个router是第一个参数,只对这个判断一下,别的放过

S
simongfxu#3·13 年前

用request把,没这个问题。

D
dengqiao#4·13 年前

这个不能算QueryString的bug吧,只能说百度的url太奇葩了

参与回复
登录后即可参与回复。登录