Я пытаюсь получить 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"}
Редактировать оригинальный URL уже 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
, поэтому я получаю ошибка, в настоящее время мы решили ее с помощью regex (удаление localhost/?param1=
части URL).
Какой лучший способ справиться с этим прецедентом?
Edit: серверная среда
centos 6.5 server
node v0.12.7
Я не могу воспроизвести это с помощью выражения 'express @ 4.13.3' (пробовал как парсеры' simple', так и 'extended'). – robertklep
@robertklep, используя 'express @ 4.13.3', все еще получая ошибку, поэтому версия exprress не проблема, пожалуйста, проверьте отредактированный вопрос для других серверных сред. –
Вот [gist] (https://gist.github.com/robertklep/1fceb84ed3eeb6d4df6d) с кодом, который я использовал для тестирования. – robertklep