HTTP backend: do not load resources from cache that must be revalidated
The header field "Cache-Control: must-revalidate" is a strict requirement for loading the resource from the server, and not reading it from the cache without revalidating first. With this patch, PreferCache will load such from the network instead of loading them from the cache, and AlwaysCache will throw a ContentNotFound error. Reviewed-by: Markus Goetz Task-number: QTBUG-18983 (cherry picked from commit 0e449f38894b1bd2dbb2f14206a011424679f063)
This commit is contained in:
parent
bf89190cfb
commit
f38a639a41
@ -262,13 +262,11 @@ bool QNetworkAccessHttpBackend::loadFromCacheIfAllowed(QHttpNetworkRequest &http
|
||||
if (lastModified.isValid())
|
||||
httpRequest.setHeaderField("If-Modified-Since", QNetworkHeadersPrivate::toHttpDate(lastModified));
|
||||
|
||||
if (CacheLoadControlAttribute == QNetworkRequest::PreferNetwork) {
|
||||
it = cacheHeaders.findRawHeader("Cache-Control");
|
||||
if (it != cacheHeaders.rawHeaders.constEnd()) {
|
||||
QHash<QByteArray, QByteArray> cacheControl = parseHttpOptionHeader(it->second);
|
||||
if (cacheControl.contains("must-revalidate"))
|
||||
return false;
|
||||
}
|
||||
it = cacheHeaders.findRawHeader("Cache-Control");
|
||||
if (it != cacheHeaders.rawHeaders.constEnd()) {
|
||||
QHash<QByteArray, QByteArray> cacheControl = parseHttpOptionHeader(it->second);
|
||||
if (cacheControl.contains("must-revalidate"))
|
||||
return false;
|
||||
}
|
||||
|
||||
QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
|
Loading…
Reference in New Issue
Block a user