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);