summaryrefslogtreecommitdiffstats
path: root/src/network/access/qhttpnetworkrequest.cpp
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2016-12-28 15:27:57 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2017-01-17 18:51:32 +0000
commitcebf1fea4a6802b8999469f647f52171e87d02b6 (patch)
treeca858bb7eb3b482d1e555c285b08c0e627497256 /src/network/access/qhttpnetworkrequest.cpp
parent27e27966bf01b4c42343100a49b1dd6b014025fe (diff)
Add redirects policy to QNetworkAccessManager
This patch makes it possible to enable/disable redirects on QNAM level (before it was per-request only). This policy would be applied to all subsequent requests* created by QNAM. The policies we support at the moment: a. Manual - that's what we always had - it's up to a user to handle redirects. b. NoLessSafeRedirectsPolicy - we allow http->http, http->https and https->https redirects, but no protocol 'downgrade' (no https->http redirects). c. SameOriginPolicy - we check that protocol/host/port are the same. Updated tst_qnetworkreply. *We previously were enabling redirect for each request, by setting FollowRedirectsAttribute on QNetworkRequest object. For backward compatibility this attribute has a higher priority (if set) than QNAM's policy (and it will work as NoLessSafeRedirectsPolicy). [ChangeLog][QtNetwork] Added redirects policy to QNAM Task-number: QTPM-239 Task-number: QTPM-237 Change-Id: I493d1728254b71b61b5504937e8e01dca5953527 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/network/access/qhttpnetworkrequest.cpp')
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
index 802043d847..7862d464e1 100644
--- a/src/network/access/qhttpnetworkrequest.cpp
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -48,7 +48,8 @@ QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(QHttpNetworkRequest::Oper
QHttpNetworkRequest::Priority pri, const QUrl &newUrl)
: QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), uploadByteDevice(0),
autoDecompress(false), pipeliningAllowed(false), spdyAllowed(false), http2Allowed(false),
- withCredentials(true), preConnect(false), followRedirect(false), redirectCount(0)
+ withCredentials(true), preConnect(false), redirectCount(0),
+ redirectsPolicy(QNetworkRequest::ManualRedirectsPolicy)
{
}
@@ -65,8 +66,8 @@ QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(const QHttpNetworkRequest
withCredentials(other.withCredentials),
ssl(other.ssl),
preConnect(other.preConnect),
- followRedirect(other.followRedirect),
- redirectCount(other.redirectCount)
+ redirectCount(other.redirectCount),
+ redirectsPolicy(other.redirectsPolicy)
{
}
@@ -88,7 +89,8 @@ bool QHttpNetworkRequestPrivate::operator==(const QHttpNetworkRequestPrivate &ot
&& (operation != QHttpNetworkRequest::Custom || (customVerb == other.customVerb))
&& (withCredentials == other.withCredentials)
&& (ssl == other.ssl)
- && (preConnect == other.preConnect);
+ && (preConnect == other.preConnect)
+ && (redirectsPolicy == other.redirectsPolicy);
}
QByteArray QHttpNetworkRequest::methodName() const
@@ -229,12 +231,17 @@ void QHttpNetworkRequest::setPreConnect(bool preConnect)
bool QHttpNetworkRequest::isFollowRedirects() const
{
- return d->followRedirect;
+ return d->redirectsPolicy != QNetworkRequest::ManualRedirectsPolicy;
}
-void QHttpNetworkRequest::setFollowRedirects(bool followRedirect)
+void QHttpNetworkRequest::setRedirectsPolicy(QNetworkRequest::RedirectsPolicy policy)
{
- d->followRedirect = followRedirect;
+ d->redirectsPolicy = policy;
+}
+
+QNetworkRequest::RedirectsPolicy QHttpNetworkRequest::redirectsPolicy() const
+{
+ return d->redirectsPolicy;
}
int QHttpNetworkRequest::redirectCount() const