Express js empêche GET / favicon.ico

dans chaque requête, mon serveur reçoit la requête GET à / favicon.ico, même si C'est l'api REST qui n'inclut pas le fichier html. Pourquoi cela se produit-il et comment puis-je empêcher cette demande?

17
demandé sur Super Chafouin 2016-02-15 14:54:40

4 réponses

les navigateurs vont par défaut essayer de demander /favicon.ico à partir de la racine d'un nom d'hôte, afin d'afficher une icône dans l'onglet du navigateur.

Si vous souhaitez éviter cette demande de retourner une erreur 404, vous pouvez soit:

  • Alimentation favicon.ico fichier disponible à la racine de votre site.
  • utilisez un module tel que servir-favicon pour pointer les requêtes vers un fichier spécifique.
  • Catch favicon.ico demande et envoyer un 204 No Content statut:

    app.get('/favicon.ico', (req, res) => res.status(204));

44
répondu duncanhall 2018-04-27 09:31:14

ma méthode préférée est middleware

mettre ça quelque part:

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

puis:

app.use(ignoreFavicon);
7
répondu Blair Anderson 2017-09-03 17:43:51

je pense que vous voulez dire que votre serveur reçoit une telle demande. Généralement, le navigateur va essayer d'obtenir une icône à afficher sur l'onglet. Surtout Chrome est très agressif (du moins c'est mon observation).

Ce que vous pouvez faire est de traiter correctement la requête pour vos pages HTML et de l'Ignorer pour les appels API (car ils ne se produiront probablement pas au premier plan avec un navigateur)

3
répondu Marco Alka 2016-02-15 11:58:12
204ne doit pas rendre un corps. En outre, vous ne voulez attraper demande de favicon par exemple:https://example.com/some/path/favicon.ico