gpt4 book ai didi

javascript - dlib http 服务器将网站显示为纯 html,没有 javascript/css

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:25 25 4
gpt4 key购买 nike

我尝试在我的 C++ 程序中实现一个小型 http 服务器,以使用 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 看起来不错。提前致谢

编辑:感谢 Davis King,我至少让 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 中引用的图像,据我所知,这些图像在困惑的布局中似乎有效?但无论如何还是非常感谢,我会投票给你,但遗憾的是我不能......

最佳答案

浏览器将从网络服务器请求 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");

关于javascript - dlib http 服务器将网站显示为纯 html,没有 javascript/css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15408517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com