web-dev-qa-db-fra.com

Pourquoi express-js ne définit-il pas l'en-tête Content-Type?

J'ai le suivant:

var express = require('express'),
    app = express.createServer();

app.get("/offline.manifest", function(req, res){
  res.contentType("text/cache-manifest");
  res.end("CACHE MANIFEST");
});

app.listen(8561);

L'onglet réseau de Chrome indique que c'est text/plain. Pourquoi ne définit-il pas l'en-tête?

Le code ci-dessus fonctionne, mes problèmes ont été causés par un lien vers une ancienne version de express-js

21
Kit Sunde

Essayez ce code:

var express = require('express'),
    app = express.createServer();

app.get("/offline.manifest", function(req, res){
  res.header("Content-Type", "text/cache-manifest");
  res.end("CACHE MANIFEST");
});

app.listen(8561);

(Je suppose que vous utilisez la dernière version de express, 2.0.0)

UPDATE: Je viens de faire un test rapide en utilisant Firefox 3.6.x et les en-têtes HTTP Live. Voici la sortie des addons:

 HTTP/1.1 200 OK
 X-Powered-By: Express
 Content-Type: text/cache-manifest
 Connection: keep-alive
 Transfer-Encoding: chunked

Assurez-vous d'effacer votre cache avant d'essayer.

19
schaermu

au lieu de res.send()

utilisez res.json() qui définit automatiquement le type de contenu sur application/json

0
danday74