내 http 서버에서 HTTP 응답으로 데이터가 전송되지 않습니다.
문제
수업을 위해 HTTP 서버를 만들기 위해 노력하고 있습니다. 그러나 반환 된 파일은 Firefox에 의해 표시되지 않습니다. 응답 헤더를 구성하고 오른쪽에 넣습니다. content-length
보내고 싶은 파일의 경우 전화로 응답 헤더를 보냅니다. send()
. 다음은 사용합니다 send()
다시 파일을 보내려면 Firefox가 파일을 표시하지 않는 이유는 무엇입니까? 아래에 관련 코드를 게시하겠습니다.
코드에서 볼 수 있듯이 error_response
, 404 오류 중. 라이브 HTTP 헤더를 사용하여 Firefox가 올바른 응답 헤더와 cout << error_response << endl;
올바른 응답을 인쇄합니다. Firefox가 표시하지 않는 이유는 무엇입니까? 한 번만 전화하면됩니다 send()
헤더와 응답 패킷이 포함되어 있습니까?
// send response headers
response->Print( buffer, 2000 );
if ( send( acc_tcp_sock, buffer, sizeof(buffer), 0 ) < 0 ) {
cerr << "Unable to send response headers to client." << endl;
return 5;
}
// if 200 and GET then send file
if ( response->Get_code() == 200 && method == "GET" ) {
// send file
}
// close file, if it has been opened
if ( response->Get_code() == 200 ) {
fclose( returned_file );
}
else if ( method == "GET" ) {
if ( send( acc_tcp_sock, error_response.c_str(), error_response.length(), 0 ) < 0 ) {
cerr << "Unable to send data to client." << endl;
return 6;
}
cout << error_response << endl;
}
close( acc_tcp_sock ); // close the connection
}
return 0;
}
해결책
응답 헤더를 보내려고 했습니까? 그리고 동일한 보내기 명령의 파일? Firefox가 무엇을 받고 있는지 알 수있는 방법이 있습니까? 서버에 HTTP 요청을 보내고 그 대가에 대한 대가를 확인하는 콘솔 앱인 HTTPREQUESTER 클래스를 사용하여 글을 쓰려고 시도 할 수 있습니다.
제휴하지 않습니다 StackOverflow