summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativexmlhttprequest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativexmlhttprequest.cpp')
-rw-r--r--src/declarative/qml/qdeclarativexmlhttprequest.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
index e8f1a85b..5fd23600 100644
--- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp
+++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
@@ -1270,6 +1270,11 @@ void QDeclarativeXMLHttpRequest::finished()
if (redirect.isValid()) {
QUrl url = m_network->url().resolved(redirect.toUrl());
if (url.scheme() != QLatin1String("file")) {
+ // See http://www.ietf.org/rfc/rfc2616.txt, section 10.3.4 "303 See Other":
+ // Result of 303 redirection should be a new "GET" request.
+ const QVariant code = m_network->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+ if (code.isValid() && code.toInt() == 303 && m_method != QLatin1String("GET"))
+ m_method = QStringLiteral("GET");
destroyNetwork();
requestFromUrl(url);
return;