QNetworkReply* AccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest& request, QIODevice* outgoingData) { QNetworkRequest newRequest(request); if (newRequest.hasRawHeader("cookie")) { // This will set the cookie into the QNetworkCookieJar which will then override the cookie header setRawCookie(request.rawHeader("cookie"), request.url()); } newRequest.setRawHeader(QByteArray("User-Agent"), Utility::userAgentString()); QByteArray verb = newRequest.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray(); // For PROPFIND (assumed to be a WebDAV op), set xml/utf8 as content type/encoding // This needs extension if (verb == "PROPFIND") { newRequest.setHeader( QNetworkRequest::ContentTypeHeader, QLatin1String("text/xml; charset=utf-8")); } return QNetworkAccessManager::createRequest(op, newRequest, outgoingData); }
QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { if (_cred->user().isEmpty() || _cred->password().isEmpty()) { qWarning() << Q_FUNC_INFO << "Empty user/password provided!"; } QNetworkRequest req(request); QByteArray credHash = QByteArray(_cred->user().toUtf8()+":"+_cred->password().toUtf8()).toBase64(); req.setRawHeader(QByteArray("Authorization"), QByteArray("Basic ") + credHash); // A pre-authenticated cookie QByteArray token = _cred->_token.toUtf8(); if (token.length() > 0) { setRawCookie(token, request.url()); } return AccessManager::createRequest(op, req, outgoingData); }
QNetworkReply *AccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { QNetworkRequest newRequest(request); if (newRequest.hasRawHeader("cookie")) { // This will set the cookie into the QNetworkCookieJar which will then override the cookie header setRawCookie(request.rawHeader("cookie"), request.url()); } newRequest.setRawHeader(QByteArray("User-Agent"), Utility::userAgentString()); // Some firewalls reject requests that have a "User-Agent" but no "Accept" header newRequest.setRawHeader(QByteArray("Accept"), "*/*"); QByteArray verb = newRequest.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray(); // For PROPFIND (assumed to be a WebDAV op), set xml/utf8 as content type/encoding // This needs extension if (verb == "PROPFIND") { newRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("text/xml; charset=utf-8")); } // Generate a new request id QByteArray requestId = generateRequestId(); qInfo(lcAccessManager) << op << verb << newRequest.url().toString() << "has X-Request-ID" << requestId; newRequest.setRawHeader("X-Request-ID", requestId); #if QT_VERSION >= QT_VERSION_CHECK(5, 9, 4) // only enable HTTP2 with Qt 5.9.4 because old Qt have too many bugs (e.g. QTBUG-64359 is fixed in >= Qt 5.9.4) if (newRequest.url().scheme() == "https") { // Not for "http": QTBUG-61397 // Don't enable by default until QTBUG-73947 is fixed static auto http2EnabledEnv = qgetenv("OWNCLOUD_HTTP2_ENABLED"); if (http2EnabledEnv == "1") { newRequest.setAttribute(QNetworkRequest::HTTP2AllowedAttribute, true); } } #endif return QNetworkAccessManager::createRequest(op, newRequest, outgoingData); }