使用 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.css
和 admin.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) 客户端如何接收 css
和 js
文件?
2) 提供静态文件的常识是什么?
2.1) 我是否应该将 *.html
文件读取到缓冲区,将 *.css
的内容注入到缓冲区 <style>
标记中,将 *.js
的内容注入 <script>
标签?还有更多effective/elegant/good的方法吗?
- 客户端将收到 .css 和 .js 文件,但不是您想象的那样!当客户端请求您的 html 文件时,它将对其进行解析,然后发现它包含 .css 或 .js 等。因此它只会在其他请求中单独请求它们。为了使其正常工作,您需要键入发送回客户端的文件。查找 HTTP Header "Content-Type"(例如:对于 HTML 文件,您应将它们键入 "Content-Type: text/html")。
- 不清楚你的要求。
- 当然不是,让客户端完成它的工作!
现代浏览器会为你做这件事,你需要在服务器端做的就是用正确的文件进行响应。哈哈。希望对您有所帮助
我有自己的基于 C++ TCP 套接字的 Web 服务器实现。现在此服务器可以在 HTTP body 中发送纯文本。我需要这个服务器来发送静态文件(HTML、CSS、JS)。文件位于./static/
目录(./static/admin.html
、./static/admin.css
、./static/admin.js
),服务器读取文件内容并使用适当的HTTP-headers 将其发送给客户端。 admin.html
文件有 link 到 admin.css
和 admin.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) 客户端如何接收 css
和 js
文件?
2) 提供静态文件的常识是什么?
2.1) 我是否应该将 *.html
文件读取到缓冲区,将 *.css
的内容注入到缓冲区 <style>
标记中,将 *.js
的内容注入 <script>
标签?还有更多effective/elegant/good的方法吗?
- 客户端将收到 .css 和 .js 文件,但不是您想象的那样!当客户端请求您的 html 文件时,它将对其进行解析,然后发现它包含 .css 或 .js 等。因此它只会在其他请求中单独请求它们。为了使其正常工作,您需要键入发送回客户端的文件。查找 HTTP Header "Content-Type"(例如:对于 HTML 文件,您应将它们键入 "Content-Type: text/html")。
- 不清楚你的要求。
- 当然不是,让客户端完成它的工作!
现代浏览器会为你做这件事,你需要在服务器端做的就是用正确的文件进行响应。哈哈。希望对您有所帮助