자바 스크립트 애플리케이션에서 커스텀 AJAX 요청을 처리하기 위해 하위 클래스 인 QNetworkAccessManager와 QNetworkReply가 있습니다. 내 네트워크 응답에서 헤더가 제거 된 것만 제외하고 대부분 작동합니다.QNetworkReply에 HTML 헤더 추가
QNetworkAccessManager::createRequest
에 의해 반환 된 NetworkReply
이 헤더가 올바르게 설정되어 있는지 확인할 수 있지만 JavaScript에서 액세스 할 수는 없습니다.
NetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
{
if(request.url().host() == "test")
{
NetworkReply* nr = new NetworkReply(request, outgoingData);
if (nr->hasRawHeader("Test-Header"))
{
qDebug() << "[Qt] Sending Network Reply with Test-Header value: " << nr->rawHeader("Test-Header");
}
return nr;
}
return QNetworkAccessManager::createRequest(op, request, outgoingData);
}
생성자 NetworkReply
내부 내가 헤더 값을 검색 : 자바 스크립트에서
:
var xhr = new XMLHttpRequest();
xhr.open("POST", "test.php"); // fake url
xhr.responseType = "json";
xhr.setRequestHeader("Test-Header", "42");
xhr.onload = onXHRLoad;
xhr.send();
이 다음 QNetworkAccessManager
내부 검색하고 다음과 같이 새로운 QNetworkReply
을 만드는 데 사용되는 아래의 코드를 살펴 보자 요청에서 답장으로 설정하십시오.
if (request.hasRawHeader("Test-Header"))
{
this->setRawHeader("Test-Header", request.rawHeader("Test-Header"));
}
,515,
I는 (데이터 인 동안)에 자바 스크립트 헤더가없는 응답을 수신하지만 때,이 값이 정확하게 설정되어 새로 생성 된 응답이 실제로 상기 헤더 존재를 않는다 확인할 수 그래서 그것을
function onXHRLoad(event) {
var header = event.target.getResponseHeader("Test-Header"); // <- null
}