39 votes

Dans Node.js/Express, comment ajouter automatiquement cet en-tête à chaque réponse "render" ?

Je possède plusieurs de ces "contrôleurs" :

app.get('/',function(req,res){
    var stuff = { 'title': 'blah' };
    res.render('mytemplate',stuff);
});    

Avis res.render ? Je veux ajouter cet en-tête à chaque en-tête de réponse que je crée :

X-XSS-Protection: 0

Comment ajouter automatiquement cet en-tête de réponse ?

3voto

obrientimothya Points 121

Je trouve qu'un autre bon endroit pour injecter des en-têtes par défaut est l'intergiciel de routage. De cette façon, toutes les routes contrôlées par l'instance de routeur recevront les en-têtes.

Par exemple :

//...
var router = express.Router();

// middleware for all routes
router.use(function(req, res, next) {
  // inject default headers
  res.header('cache-control', 'private, max-age=0');
  res.header('expires', new Date(Date.now()).toUTCString());
  next();
});

// all routes below will now inherit 
// the middleware's default headers
router.get('/users', function(req, res){
   // I will return the user list, with default headers
   // ...
});

1voto

user3697417 Points 11

J'aimerais souligner qu'aucune de ces réponses ne répond réellement à la question ; la question porte spécifiquement sur les réponses de rendu ; par exemple, pour une application comme :

const router = require('express').Router();
router.use('/test.json', (req, res) => res.json({ test: 'hi' });
router.use('/test.html', (req, res) => res.render('test'));

La manière d'ajouter des en-têtes n'est pas claire (par exemple, les en-têtes CSP, qui peuvent être très verbeux). sólo à vos réponses HTML. Express n'a pas de crochet pour faire cela spécifiquement. La seule option pour le moment est d'organiser votre code de manière à ne pas avoir à le faire, par ex.

app.use(jsonRouter);
app.use(htmlRouter);

...qui vous permet de faire ce que certaines des autres réponses suggèrent, et d'ajouter un logiciel intermédiaire générique pour définir les en-têtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X