如何在nodejs上停止图像热链接?

时间:2014-03-21 19:52:37

标签: node.js express hotlinking

如何使用nodejs和express来阻止人们在应用上链接图像?我在我自己的服务器上托管。这是我需要构建到app.js文件中的东西吗?感谢。

3 个答案:

答案 0 :(得分:1)

您需要编写中间件才能接受来自您网站的某些有效参考。一定要接受现代搜索引擎,社交媒体网站,也不要接受任何引用。

答案 1 :(得分:0)

如果您将nginx与节点一起使用,则此处为solution

基本上,它会检查引荐来源,如果未经授权,则返回403.

你也可以使用相同的逻辑编写一个表达中间件。

答案 2 :(得分:0)

创建一个中间件来检查HTTP请求标头中的Referer,其中包含流行的搜索引擎,媒体和网站的域。

将此添加到您的app.js文件中。假设您使用的是Express 4.x。

app.use('/', (req , res , next) => {
    const referrer = req.get('Referrer');
    if (referrer == null) {
      next(); // referrer is an optional http header, it may not exist
    }
    if (["https://www.facebook.com", "https://www.google.com"].includes(referrer)) {  // compare referrer with your whitelist
      res.status(403).send("You are not allowed to view this photo!"); // block the request
    }
    next();
});
app.get('/',(req,res)=>{
  res.sendFile(`PATH_OF_YOUR_IMAGE`);
});
  

了解有关Referer HTTP标头的更多信息

     

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer