我试图使用以下代码从请求对象获取param。
module.exports = function (req, res) {
var query = req.query;
var data = JSON.parse(query.param1);
}
这对大多数情况都很好。
如果param1
包含&
字符,则query.param1
获取&
之前的值,下一个值被视为新param
。
例如
localhost/?param1={"url":"http://s.test.com/x?format=jsonp&id=a&callback=b"}
修改原始网址已经是encoded
localhost/?param1=%7B%22url%22%3A%22http%3A%2F%2Fs.test.com%2Fx%3Fformat%3Djsonp%26id%3Da%26callback%3Db%22%7D
在这种情况下,我得到param1
= {"url":"http://s.test.com/x?format=jsonp
无效json
,因此我收到错误,目前我们已使用正则表达式解决了问题(删除了网址的localhost/?param1=
部分)。
处理此用例的最佳方法是什么?
修改:服务器环境
centos 6.5 server
node v0.12.7
express@4.13.3
答案 0 :(得分:0)
答案 1 :(得分:0)
您必须在调用nodejs API之前对您的URL进行编码。在nodejs方面,您必须解码URL以获得正确的参数。