2011-03-23 12 views
16

Tengo el siguiente:¿Por qué Express-js no establece el encabezado Content-Type?

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

la ficha Red en Chrome dice que es text/plain. ¿Por qué no está configurando el encabezado?

El código anterior funciona, mis problemas fueron causados ​​por un enlace a una versión antigua de Express-js

Respuesta

23

res.type('json') también funciona ahora y como otros han dicho, sólo tiene que utilizar
res.json({your: 'object'})

+2

esto es genial ya que todavía le permite usar 'res.send (obj)' para enviar objetos como JSON. Mejor que 'res.end (JSON.stringify (obj))' –

+1

puede encadenarlo también, 'res.type ('json'). Send ({your: 'object'});' o como @danday74 below points fuera, simplemente 'res.json ({your: 'object'});' –

17

Prueba este código:

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

(Asumo que está utilizando el última versión de expreso, 2.0.0)

ACTUALIZACIÓN: que acabo de hacer una prueba rápida utilizando 3.6.x Firefox y Live HTTP Headers. Esta es la salida de complementos:

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

Asegúrese de borrar la caché antes de intentarlo.

+1

No hace trabajo para mí, todavía dice text/plain. –

+0

Acabo de probarlo en mi configuración de desarrollo local, funcionó perfectamente (ver actualización) – schaermu

+0

Aha! Por algún motivo, estaba enlazando a una versión anterior del nodo. ¡Gracias! :) –

1

en lugar de res.send()

uso res.json() que establece automáticamente el tipo de contenido a application/json

Cuestiones relacionadas