NodeJS的QueryString的bug要怎么解决
发布于 11 年前 作者 yangff 4947 次浏览 最后一次编辑是 8 年前

我用了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 回复

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

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

用request把,没这个问题。

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

回到顶部