void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request) { Q_ASSERT(socket); int i = indexOf(socket); // Send "Authorization" header, but not if it's NTLM and the socket is already authenticated. if (channels[i].authMethod != QAuthenticatorPrivate::None) { if (!(channels[i].authMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 401)) { QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].authenticator); if (priv && priv->method != QAuthenticatorPrivate::None) { QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false)); request.setHeaderField("Authorization", response); channels[i].authenticationCredentialsSent = true; } } } // Send "Proxy-Authorization" header, but not if it's NTLM and the socket is already authenticated. if (channels[i].proxyAuthMethod != QAuthenticatorPrivate::None) { if (!(channels[i].proxyAuthMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 407)) { QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].proxyAuthenticator); if (priv && priv->method != QAuthenticatorPrivate::None) { QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false)); request.setHeaderField("Proxy-Authorization", response); channels[i].proxyCredentialsSent = true; } } } }
void QHttpSocketEngine::slotSocketConnected() { Q_D(QHttpSocketEngine); // Send the greeting. const char method[] = "CONNECT "; QByteArray peerAddress = d->peerName.isEmpty() ? d->peerAddress.toString().toLatin1() : QUrl::toAce(d->peerName); QByteArray path = peerAddress + ':' + QByteArray::number(d->peerPort); QByteArray data = method; data += path; data += " HTTP/1.1\r\n"; data += "Proxy-Connection: keep-alive\r\n" "User-Agent: "; QVariant v = property("_q_user-agent"); if (v.isValid()) data += v.toByteArray(); else data += "Mozilla/5.0"; data += "\r\n" "Host: " + peerAddress + "\r\n"; QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(d->authenticator); //qDebug() << "slotSocketConnected: priv=" << priv << (priv ? (int)priv->method : -1); if (priv && priv->method != QAuthenticatorPrivate::None) { data += "Proxy-Authorization: " + priv->calculateResponse(method, path); data += "\r\n"; } data += "\r\n"; // qDebug() << ">>>>>>>> sending request" << this; // qDebug() << data; // qDebug() << ">>>>>>>"; d->socket->write(data); d->state = ConnectSent; }
void QHttpSocketEngine::slotSocketConnected() { Q_D(QHttpSocketEngine); // Send the greeting. const char method[] = "CONNECT"; QByteArray peerAddress = d->peerAddress.toString().toLatin1(); QByteArray path = peerAddress + ':' + QByteArray::number(d->peerPort); QByteArray data = method; data += " "; data += path; data += " HTTP/1.1\r\n"; data += "Proxy-Connection: keep-alive\r\n" "Host: " + peerAddress + "\r\n"; QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(d->authenticator); //qDebug() << "slotSocketConnected: priv=" << priv << (priv ? (int)priv->method : -1); if (priv && priv->method != QAuthenticatorPrivate::None) { data += "Proxy-Authorization: " + priv->calculateResponse(method, path); data += "\r\n"; } data += "\r\n"; // qDebug() << ">>>>>>>> sending request" << this; // qDebug() << data; // qDebug() << ">>>>>>>"; d->socket->write(data); d->state = ConnectSent; }
void QHttpSocketEngine::slotSocketConnected() { Q_D(QHttpSocketEngine); // Send the greeting. const char method[] = "CONNECT"; QByteArray peerAddress = d->peerName.isEmpty() ? d->peerAddress.toString().toLatin1() : QUrl::toAce(d->peerName); QByteArray path = peerAddress + ':' + QByteArray::number(d->peerPort); QByteArray data = method; data += " "; data += path; data += " HTTP/1.1\r\n"; data += "Proxy-Connection: keep-alive\r\n"; data += "Host: " + peerAddress + "\r\n"; if (!d->proxy.hasRawHeader("User-Agent")) data += "User-Agent: Mozilla/5.0\r\n"; foreach (const QByteArray &header, d->proxy.rawHeaderList()) { data += header + ": " + d->proxy.rawHeader(header) + "\r\n"; } QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(d->authenticator); //qDebug() << "slotSocketConnected: priv=" << priv << (priv ? (int)priv->method : -1); if (priv && priv->method != QAuthenticatorPrivate::None) { d->credentialsSent = true; data += "Proxy-Authorization: " + priv->calculateResponse(method, path); data += "\r\n"; } data += "\r\n"; // qDebug() << ">>>>>>>> sending request" << this; // qDebug() << data; // qDebug() << ">>>>>>>"; d->socket->write(data); d->state = ConnectSent; }