2013-03-14 17 views
1

我试图在我的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你,但我伤心地不能...

+0

什么是图像的URL?如果他们工作必须是某些其他服务器上的图像的URL。 – 2013-03-15 10:48:34

+0

这里是存储在本地的文件的例子:因为它显示在控制台中适当的请求被发送,但我完全不明白我的纯文本文件的通用响应如何与GIF – user2160180 2013-03-15 11:14:57

+0

字节即字节的作品,所以如果你所做的只是读取磁盘中的字节并返回它们,那么无论文件中的内容如何,​​它都可以工作。然而,你可能会发现你需要为某些文件设置Content-Type,这样浏览器才会意识到如何处理它,但总的来说,它应该能够弄清楚。 – 2013-03-15 23:23:30

回答

0

浏览器将要求从Web服务器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

非常感谢,但尽管您的回答听起来很合理,但它不起作用。控制台正确显示请求路径,但视图根本不会改变。 javascript和css文件与服务器可执行文件和html文件位于同一目录中。 – user2160180 2013-03-14 22:29:27

+0

哇我才意识到,JavaScript部分确实现在的工作,我只是没有看到它首先是因为CSS不工作,我不能看到一大堆。仍然不知道为什么CSS不起作用。 – user2160180 2013-03-14 22:39:31

+0

也许浏览器缓存了以前对Style.css的响应?你看到它请求Style.css文件吗? – 2013-03-15 03:45:51

相关问题