Why isn't express-js setting the Content-Type header?

66,116

Solution 1

res.type('json') works too now and as others have said, you can simply use
res.json({your: 'object'})

Solution 2

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

(I'm assuming you are using the latest release of express, 2.0.0)

UPDATE: I just did a quick test using Firefox 3.6.x and Live HTTP Headers. This is the addons output:

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

Make sure you clear your cache before trying.

Solution 3

instead of res.send()

use res.json() which automatically sets the content-type to application/json

Share:
66,116
codeimplementer
Author by

codeimplementer

CTO at Media Pop, hire us for DevOps and product development

Updated on July 16, 2022

Comments

  • codeimplementer
    codeimplementer almost 2 years

    I have the following:

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

    The network tab in Chrome says it's text/plain. Why isn't it setting the header?

    The code above works, my problems were caused by a linking to an old version of express-js