dlib http сервер показывает веб-сайт как обычный html без javascript / css

Я попытался внедрить небольшой http-сервер в мою программу на c ++, чтобы использовать веб-сайт в качестве интерфейса с использованием библиотеки dlib (http://dlib.net/network.html#server_http). Этот код должен прочитать входной HTML-файл по запросу и вернуть его.

class web_server : public server_http
{
const std::string on_request (
const incoming_things& incoming,
outgoing_things& outgoing
)
{
ostringstream sout;
sout<<get_file_contents("Seite.html");
return sout.str();
}

};

Это работает, но мой браузер показывает только простой HTML-сайт без каких-либо элементов javascript / css. Они интегрированы в HTML-файл через:

   <script type="text/javascript" src="scripte.js")>
</script>
<link rel="stylesheet" type="text/css" href="Style.css">

HTML выглядит хорошо, если я открываю его с помощью браузера напрямую.
заранее спасибо

Редактировать: Спасибо, Дэвис Кинг, у меня по крайней мере работает JavaScript, в то время как CSS все еще отказывается работать. Мне удалось добавить общий ответ, который теперь отправляет любой запрошенный файл в виде строки: body on_request:

ostringstream sout;
sout<<get_file_contents("Seite.html");
cout << "request path: " << incoming.path << endl;
string filename=incoming.path.substr(1,incoming.path.length());
if (incoming.path.substr(0,1) == "/" && incoming.path.length()>1) return get_file_contents(filename.c_str());
return sout.str();

Изменить еще раз:
Это работает сейчас. Chrome дал мне подсказку, он сказал, что MIME-тип файла таблицы стилей это text / html, но он должен быть text / css. Я изменил свой метод ответа соответственно, и теперь он работает:

if (incoming.path=="/Style.css") outgoing.headers["Content-Type"] == "text/css";

В качестве дополнительного вопроса: почему файлы css и js вызывают запрос, а не изображения, на которые я ссылаюсь в html, которые, насколько я могу судить, с помощью испорченного макета работают?
Но в любом случае, большое спасибо, я бы проголосовал за тебя, но, к сожалению, не могу …

1

Решение

Браузер будет запрашивать файлы Style.css и scripte.js с веб-сервера, но так, как вы их написали, он всегда будет отвечать только файлом Seite.html. Так что вы должны добавить что-то вроде этого в ваш метод on_request:

cout << "request path: " << incoming.path << endl;
if (incoming.path == "/scripte.js")
return get_file_contents("scripte.js");
else if (incoming.path == "/Style.css")
return get_file_contents("Style.css");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]