豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: nodejs静态服务器

🤖 Ai回答:
Node.js 静态文件服务器

下面是一个使用 Node.js 创建简单静态文件服务器的完整示例:

基本实现

javascript
const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');

const PORT = 3000;
const ROOT_DIR = path.join(__dirname, 'public'); // 设置静态文件根目录

const server = http.createServer((req, res) = {
// 解析请求路径
const parsedUrl = url.parse(req.url);
let pathname = path.join(ROOT_DIR, parsedUrl.pathname);

// 防止目录遍历攻击
pathname = path.normalize(pathname);
if (!pathname.startsWith(ROOT_DIR)) {
res.writeHead(403);
res.end('403 Forbidden');
return;
}

fs.stat(pathname, (err, stats) = {
if (err) {
// 文件不存在
res.writeHead(404);
res.end(`404 Not Found: ${req.url}`);
return;
}

if (stats.isDirectory()) {
// 如果是目录,尝试返回 index.html
pathname = path.join(pathname, 'index.html');
fs.stat(pathname, (err, stats) = {
if (err !stats.isFile()) {
res.writeHead(404);
res.end(`404 Not Found: ${req.url}`);
return;
}
serveFile(pathname, res);
});
} else {
// 是文件,直接返回
serveFile(pathname, res);
}
});
});

function serveFile(pathname, res) {
// 根据文件扩展名设置 Content-Type
const ext = path.parse(pathname).ext;
const mimeType = {
'.html': 'text/html',
'.js': 'text/javascript',
'.css': 'text/css',
'.json': 'application/json',
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.gif': 'image/gif',
'.svg': 'image/svg+xml',
'.ico': 'image/x-icon'
}[ext] 'text/plain';

fs.readFile(pathname, (err, data) = {
if (err) {
res.writeHead(500);
res.end(`500 Server Error: ${err}`);
return;
}

res.writeHead(200, {
'Content-Type': mimeType,
'Content-Length': data.length
});
res.end(data);
});
}

server.listen(PORT, () = {
console.log(`Server running at http://localhost:${PORT}/`);
});

使用 Express 的更简单实现

如果你可以使用 Express 框架,实现会更简单:

javascript
const express = require('express');
const path = require('path');

const app = express();
const PORT = 3000;
const ROOT_DIR = path.join(__dirname, 'public');

// 设置静态文件目录
app.use(express.static(ROOT_DIR));

// 处理 404
app.use((req, res) = {
res.status(404).send('404 Not Found');
});

app.listen(PORT, () = {
console.log(`Server running at http://localhost:${PORT}/`);
});

使用 `serve` 模块(最简单的方法)

如果你只是想快速启动一个静态服务器而不想写代码,可以安装 `serve` 模块:

bash
npm install -g serve

然后运行:

bash
serve -l 3000 ./public

功能扩展

基本服务器可以扩展以下功能:
文件压缩(gzip)
缓存控制
自动目录列表
支持 HTTP/2
日志记录
支持范围请求(断点续传)

安全注意事项

1、始终验证请求路径,防止目录遍历攻击
2、限制访问的目录范围
3、设置适当的响应头(如 X-Content-Type-Options)
4、考虑添加基本的速率限制

希望这个示例对你有所帮助!根据你的具体需求,可以选择不同的实现方式。

Ai作答

📣 商家广告


vps

取名

姓名

月饼

广告招商


0

IP地址: 6.120.75.14

搜索次数: 0

提问时间: 2025-11-10 02:13:46

🛒 域名购买
vj.gs
9-9.net
761.net.cn
souru.com.cn
23.plus
94.plus
yq.gs
gongai.com.cn
396.net.cn
797.net.cn

❓️ 热门提问
横版挂机游戏
云渲染服务器
远程主机租赁
ICON图标服务器
香港ict
济南做服务器的公司
域名转卖网站
虚拟空间旅游
关键词广告展示广告
网页游戏 挂机
豌豆Ai站群搜索引擎系统

🌐 域名评估
Daxie.cn
apbpr.com
wt.cx
u.fj.cn
tofh.cn
vzbw.cn
a.info
yu8.js.cn
p.qh.cn
english.sc.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
検索エンジン  Sökmotor Android  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 83943 83944 83945 下一篇