使用 C++ 提供静态文件

Serving static files with C++

我有自己的基于 C++ TCP 套接字的 Web 服务器实现。现在此服务器可以在 HTTP body 中发送纯文本。我需要这个服务器来发送静态文件(HTML、CSS、JS)。文件位于./static/ 目录(./static/admin.html./static/admin.css./static/admin.js),服务器读取文件内容并使用适当的HTTP-headers 将其发送给客户端。 admin.html 文件有 link 到 admin.cssadmin.js,如下面的代码所示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Admin Page</title>
    <link rel="stylesheet" type="text/css" href="admin.css">
</head>
<body>
    <script src="admin.js"></script>
    <!-- ... -->
</body>
</html>

1) 客户端如何接收 cssjs 文件?

2) 提供静态文件的常识是什么?

2.1) 我是否应该将 *.html 文件读取到缓冲区,将 *.css 的内容注入到缓冲区 <style> 标记中,将 *.js 的内容注入 <script> 标签?还有更多effective/elegant/good的方法吗?

  1. 客户端将收到 .css 和 .js 文件,但不是您想象的那样!当客户端请求您的 html 文件时,它将对其进行解析,然后发现它包含 .css 或 .js 等。因此它只会在其他请求中单独请求它们。为了使其正常工作,您需要键入发送回客户端的文件。查找 HTTP Header "Content-Type"(例如:对于 HTML 文件,您应将它们键入 "Content-Type: text/html")。
  2. 不清楚你的要求。
  3. 当然不是,让客户端完成它的工作!

现代浏览器会为你做这件事,你需要在服务器端做的就是用正确的文件进行响应。哈哈。希望对您有所帮助