我正在为我的班级制作一个 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;
}