Qt QUrlQuery 提取Qbytearray token
Qt QUrlQuery extract Qbytearray token
Possible duplicate Question
我正在生成重置 link/token,将按如下方式通过电子邮件发送给客户。
QByteArray token;
token.resize(crypto_pwhash_SALTBYTES);
randombytes_buf(token.data(), crypto_pwhash_SALTBYTES);
QUrlQuery token_url("http://localhost:8080/reset/staff");
token_url.addQueryItem("token", token);
token_url.query(QUrl::FullyEncoded).toUtf8();
这似乎产生了正确的输出:
http://localhost:8080/reset/staff&token=pc%22%EF%BF%BD%C6%9Fsktx%EF%BF%BD!%06t%5C%0B
为了根据存储的哈希验证重置请求,我需要令牌 QByteArray。
QByteArray path = request.getPath();
qDebug() << path;
QUrlQuery token_url(path);
QString token(token_url.queryItemValue("token"));
qDebug() << token;
qDebug() << QUrl::fromPercentEncoding(path);
在 firefox 中包含粘贴的 url 的输出是乱码
"/reset/staff&token=pc\"\xEF\xBF\xBD\xC6\x9Fsktx\xEF\xBF\xBD!\x06t\\x0B"
"pc\"�Ɵsktx�!%06t\%0B"
"/reset/staff&token=pc\"�Ɵsktx�!\u0006t\\u000B"
我知道我可能在进行 doggy unsigned char 转换。
将 QBytearrays 传入和传出 QUrlQuery 的优雅方法是什么?
我见过一些程序员编写他们自己的 URL 解析器,但这似乎过分了。
[已解决] 问题出在 QtWebApps HttpRequest::decodeRequestParams()
Url 被双重解码 QUrlQuery.query() 并没有像您期望的那样安静地工作。
K.I.S.S 手动编码您的 URL
QByteArray url("http://localhost:8080/reset/staff?");
url.append("&token="+token.toPercentEncoding());
qDebug() << url;
在接收端
split the query from "?"
then split at "&" into key=value pairs
then split at "="
finally QByteArray::fromPercentEncoding(key)
finally QByteArray::fromPercentEncoding(value)
如果有人有更优雅的解决方案,我愿意改进。
Possible duplicate Question
我正在生成重置 link/token,将按如下方式通过电子邮件发送给客户。
QByteArray token;
token.resize(crypto_pwhash_SALTBYTES);
randombytes_buf(token.data(), crypto_pwhash_SALTBYTES);
QUrlQuery token_url("http://localhost:8080/reset/staff");
token_url.addQueryItem("token", token);
token_url.query(QUrl::FullyEncoded).toUtf8();
这似乎产生了正确的输出:
http://localhost:8080/reset/staff&token=pc%22%EF%BF%BD%C6%9Fsktx%EF%BF%BD!%06t%5C%0B
为了根据存储的哈希验证重置请求,我需要令牌 QByteArray。
QByteArray path = request.getPath();
qDebug() << path;
QUrlQuery token_url(path);
QString token(token_url.queryItemValue("token"));
qDebug() << token;
qDebug() << QUrl::fromPercentEncoding(path);
在 firefox 中包含粘贴的 url 的输出是乱码
"/reset/staff&token=pc\"\xEF\xBF\xBD\xC6\x9Fsktx\xEF\xBF\xBD!\x06t\\x0B"
"pc\"�Ɵsktx�!%06t\%0B"
"/reset/staff&token=pc\"�Ɵsktx�!\u0006t\\u000B"
我知道我可能在进行 doggy unsigned char 转换。
将 QBytearrays 传入和传出 QUrlQuery 的优雅方法是什么?
我见过一些程序员编写他们自己的 URL 解析器,但这似乎过分了。
[已解决] 问题出在 QtWebApps HttpRequest::decodeRequestParams() Url 被双重解码 QUrlQuery.query() 并没有像您期望的那样安静地工作。
K.I.S.S 手动编码您的 URL
QByteArray url("http://localhost:8080/reset/staff?");
url.append("&token="+token.toPercentEncoding());
qDebug() << url;
在接收端
split the query from "?"
then split at "&" into key=value pairs
then split at "="
finally QByteArray::fromPercentEncoding(key)
finally QByteArray::fromPercentEncoding(value)
如果有人有更优雅的解决方案,我愿意改进。