express 基本使用-3. 防盗链

时间:2024-10-17 21:39:39

作用: 防止其他人使用本站的静态资源

  • 在请求头的referer记录请求静态资源的网址,需要比对referer中的值,制作可以访问静态资源的白名单
req.get('referer')	// 获取请求头中referer的值
import express, { json } from "express";
const app = express();
// 静态资源访问的白名单
const httpList = ["localhost"];
const placeStolenLinks = (req, res, next) => {
  // referer:请求来源
  const referer = req.get("referer");
  // 判断请求来源是否为 httpList中的地址
  if (referer) {
    const url = new URL(referer);
    const hostname = url.hostname;// 从referer中解析出主机名
    if (!httpList.includes(hostname)) {
      return res.status(403).send("非法请求");
    }
  }
  next();
};
app.use(placeStolenLinks);
// 设置静态资源访问的文件夹
app.use(express.static("public"));

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});