express.js get 请求 http://xxxx.com/yy?a=1&gourl=/zz/bb?pageindex=2&type=1 时,req.query 取出gourl 少内容了.
发布于 6 年前 作者 mrlong 4865 次浏览 来自 问答

Get: http://xxxx.com/yy?a=1&gourl=/zz/bb?pageindex=2&type=1 服务器后台取值时: req.query.gourl = gourl=/zz/bb?pageindex=2 , 少了 type=1。 大家有没有办法解决这个问题.

12 回复

业务目的,是为了解决请求页面的操作完成之后返回到请求页面的位置。

gourl 后面的值要进行 url encode 编码就可以了。

@beyond5959 将gourl 的值进行urlencode 不行, 到了服务器req.已解开再进行query了。

@mrlong 那就通过拿 req.originalUrl,然后用 url.parse 自己处理咯。

自己顶上,

你狠棒棒哦。

@mrlong 我理解你的意思是

req.query.gourl = gourl=/zz/bb?pageindex=2&type=1

才是你想要的,但是这是不可能的,express 是用的 parseurl 模块拿出 pathname, query…近似 url.parse 只是速度上有提升。

但是我试着用 parseurl 和 url.parse 处理这个 url,结果中 query 是一样的,而 query 的处理应该都是常规处理,最后结果应该是

{ a: '1', gourl: '/zz/bb?pageindex=2', type: '1' }

encodeURIComponent 不行?

http://xxxx.com/yy?a=1&gourl=’ + encodeURIComponent(’/zz/bb?pageindex=2&type=1’)

能实现需求 方式应该很多种

url后面带url参数,这个url参数要encodeURIComponent

@polunzh @leavesdrift 这个方法想到了,没有用,到了express->req 已是转成了明文。

@blackjack 一样不灵.

回到顶部