我试图在我的c + +程序中实现一个小的http服务器使用dlib库(http://dlib.net/network.html#server_http)作为接口使用网站。这段代码应该做的是根据请求读取一个输入html文件并返回它。dlib http服务器显示网站为纯html无javascript/css
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();
}
};
它可以工作,但我的浏览器只显示没有任何javascript/css元素的纯HTML网站。这些都集成在html文件中:
<script type="text/javascript" src="scripte.js")>
</script>
<link rel="stylesheet" type="text/css" href="Style.css">
如果我直接用浏览器打开它,html看起来很好。 在此先感谢
编辑:谢谢戴维斯国王我得到了至少javascript的工作,而CSS仍然拒绝工作。我设法把在现在发送任何请求的文件作为字符串通用回应:的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中引用这似乎图像,作为工作尽我所知可以用混乱的布局来说明吗? 但是,无论如何感谢,我会upvote你,但我伤心地不能...
什么是图像的URL?如果他们工作必须是某些其他服务器上的图像的URL。 – 2013-03-15 10:48:34
这里是存储在本地的文件的例子:因为它显示在控制台中适当的请求被发送,但我完全不明白我的纯文本文件的通用响应如何与GIF – user2160180 2013-03-15 11:14:57
字节即字节的作品,所以如果你所做的只是读取磁盘中的字节并返回它们,那么无论文件中的内容如何,它都可以工作。然而,你可能会发现你需要为某些文件设置Content-Type,这样浏览器才会意识到如何处理它,但总的来说,它应该能够弄清楚。 – 2013-03-15 23:23:30