Данные не отправляются с ответом http на мой http-сервер

StackOverflow https://stackoverflow.com/questions/1805291

  •  05-07-2019
  •  | 
  •  

Вопрос

Я работаю над созданием HTTP-сервера для своего класса. Но возвращенный файл не отображается Firefox. Я создаю заголовок ответа и вставляю справа content-length файла, который я хочу отправить, затем отправляю заголовки ответа с вызовом send(). Затем я снова использую error_response для отправки файла, почему Firefox не отображает файл? Я выложу соответствующий код ниже.

Как вы увидите из кода, у меня возникают проблемы с отправкой cout << error_response << endl; во время ошибки 404. Используя действующие заголовки http, я вижу, что Firefox получает правильный заголовок ответа, а <=> выводит правильный ответ. Почему Firefox не отображает это? Нужно ли делать только один вызов <=>, содержащий заголовок и пакет ответа?

// 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. Вы можете попробовать написать с помощью некоторого класса HTTPRequester консольное приложение, которое отправляет HTTP-запрос на ваш сервер и посмотреть, что оно получает взамен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top