防盗链(Hotlinking)是指在网页或其他网络资源中,通过直接链接到其他网站上的图片、视频或其他媒体文件,从而显示在自己的网页上。这种行为通常会给被链接的网站带来额外的带宽消耗和资源浪费,而且可能侵犯了原始网站的版权。
为了防止盗链,网站管理员可以采取一些措施:
express.static
import express from 'express'
const app = express()
//自定义前缀 初始化目录
app.use('/assets',express.static('static'))
app.listen(3000,()=>{
console.log('listening on port 3000')
})
防盗链一般主要就是验证host
或者 referer
import express from 'express';
const app = express();
const whitelist = ['localhost'];
// 防止热链中间件
const preventHotLinking = (req, res, next) => {
const referer = req.get('referer'); // 获取请求头部中的 referer 字段
if (referer) {
const { hostname } = new URL(referer); // 从 referer 中解析主机名
if (!whitelist.includes(hostname)) { // 检查主机名是否在白名单中
res.status(403).send('Forbidden'); // 如果不在白名单中,返回 403 Forbidden
return;
}
}
next(); // 如果在白名单中,继续处理下一个中间件或路由
};
app.use(preventHotLinking); // 应用防止热链中间件
app.use('/assets', express.static('static')); // 处理静态资源请求
app.listen(3000, () => {
console.log('Listening on port 3000'); // 启动服务器,监听端口3000
});
127.0.0.1 无权限
localhost 有权限