Я работаю над созданием 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;
}