From d86a984e258c9e445ce9962ddf722e57391a1484 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sun, 7 Apr 2019 03:30:15 +0800 Subject: [PATCH] Correctly handle '+' sign in x-www-form-urlencoded data Fixes #10451. --- src/base/http/requestparser.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/base/http/requestparser.cpp b/src/base/http/requestparser.cpp index a12ab8a95..aab7edcfe 100644 --- a/src/base/http/requestparser.cpp +++ b/src/base/http/requestparser.cpp @@ -205,7 +205,10 @@ bool RequestParser::parsePostMessage(const QByteArray &data) // application/x-www-form-urlencoded if (contentTypeLower.startsWith(CONTENT_TYPE_FORM_ENCODED)) { - QListIterator i(QUrlQuery(data).queryItems(QUrl::FullyDecoded)); + // [URL Standard] 5.1 application/x-www-form-urlencoded parsing + const QByteArray processedData = QByteArray(data).replace('+', ' '); + + QListIterator i(QUrlQuery(processedData).queryItems(QUrl::FullyDecoded)); while (i.hasNext()) { const QStringPair pair = i.next(); m_request.posts[pair.first] = pair.second;