Express js阻止GET /favicon.ico

在每个请求中,我的服务器正在接收GET请求到/favicon.ico,即使它是不包括HTML文件的REST API。 为什么会发生这种情况,我怎样才能防止这个请求呢?

浏览器将默认尝试从主机名的根目录请求/favicon.ico ,以便在浏览器选项卡中显示图标。

如果你想避免这个请求返回一个404,你可以:

  • 提供一个favicon.ico文件,该文件位于您的网站的根目录下。
  • 使用诸如serve-favicon之类的模块将请求指向特定的文件。
  • 抓住favicon.ico请求并发送204 No Content状态:

    app.get('/favicon.ico', function(req, res) { res.status(204); });

我认为你的意思是你的服务器收到这样的请求。 通常,浏览器将尝试获取图标以显示在选项卡上。 尤其是铬是非常积极的(至less这是我的观察)。
你可以做的是正确地处理你的HTML页面的请求,并忽略它的API调用(因为它们可能通常不会在浏览器前台发生)

我的首选方法是中间件

把这个地方放在:

 function ignoreFavicon(req, res, next) { if (req.originalUrl === '/favicon.ico') { res.status(204).json({nope: true}); } else { next(); } } 

然后:

 app.use(ignoreFavicon);