diff options
| author | Lena Biliaieva <lena.biliaieva@qt.io> | 2024-04-03 20:56:29 +0200 |
|---|---|---|
| committer | Lena Biliaieva <lena.biliaieva@qt.io> | 2024-05-07 12:39:23 +0200 |
| commit | 0fef8f53c3e52dd31648c55a2376006f223a7054 (patch) | |
| tree | ef0e5fa542982ee3f5988cffd3dd51470f02272b /src/network/access/qnetworkaccesscachebackend.cpp | |
| parent | a32c152d39e80277107cb62758f0bdac6b363b5d (diff) | |
Use QHttpHeaders: Update internal users of QNRequest, QNReply, QNProxy
Replace QNetworkHeadersPrivate's main headers storage, which was
RawHeadersList, with QHttpHeaders. Replace internal usage of raw and
cooked header methods with the QHttpHeaders API.
[ChangeLog][QtNetwork][QNetworkRequest] Header value added by
QNetworkRequest::setRawHeader() method is trimmed now.
Task-number: QTBUG-107751
Change-Id: I8882978afa430651e6c798a4fed00beef6c4cfd2
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
Diffstat (limited to 'src/network/access/qnetworkaccesscachebackend.cpp')
| -rw-r--r-- | src/network/access/qnetworkaccesscachebackend.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp index fd8174c143c..ead5fe2ef54 100644 --- a/src/network/access/qnetworkaccesscachebackend.cpp +++ b/src/network/access/qnetworkaccesscachebackend.cpp @@ -47,21 +47,21 @@ bool QNetworkAccessCacheBackend::sendCacheContents() return false; QNetworkCacheMetaData::AttributesMap attributes = item.attributes(); - setAttribute(QNetworkRequest::HttpStatusCodeAttribute, attributes.value(QNetworkRequest::HttpStatusCodeAttribute)); - setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, attributes.value(QNetworkRequest::HttpReasonPhraseAttribute)); - - // set the raw headers - const QNetworkCacheMetaData::RawHeaderList rawHeaders = item.rawHeaders(); - for (const auto &header : rawHeaders) { - if (header.first.compare("cache-control", Qt::CaseInsensitive) == 0) { - const QLatin1StringView cacheControlValue(header.second); - if (cacheControlValue.contains("must-revalidate"_L1, Qt::CaseInsensitive) - || cacheControlValue.contains("no-cache"_L1, Qt::CaseInsensitive)) { - return false; - } - } - setRawHeader(header.first, header.second); + setAttribute(QNetworkRequest::HttpStatusCodeAttribute, + attributes.value(QNetworkRequest::HttpStatusCodeAttribute)); + setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, + attributes.value(QNetworkRequest::HttpReasonPhraseAttribute)); + + // set the headers + auto headers = item.headers(); + const auto cacheControlValue = QLatin1StringView( + headers.value(QHttpHeaders::WellKnownHeader::CacheControl)); + // RFC 9111 Section 5.2 Cache Control + if (cacheControlValue.contains("must-revalidate"_L1, Qt::CaseInsensitive) + || cacheControlValue.contains("no-cache"_L1, Qt::CaseInsensitive)) { + return false; } + setHeaders(std::move(headers)); // handle a possible redirect QVariant redirectionTarget = attributes.value(QNetworkRequest::RedirectionTargetAttribute); |
