Почему express-js не устанавливает заголовок 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);

На вкладке сети в Chrome указано, что это text/plain. Почему он не устанавливает заголовок?

Приведенный выше код работает, мои проблемы были вызваны ссылкой на старую версию express-js


person Kit Sunde    schedule 23.03.2011    source источник


Ответы (3)


res.type('json') теперь тоже работает, и, как говорили другие, вы можете просто использовать
res.json({your: 'object'})

person Ray Hulha    schedule 23.10.2016
comment
это здорово, так как вы по-прежнему можете использовать res.send(obj) для отправки объектов в формате JSON. Лучше, чем res.end(JSON.stringify(obj)) - person Joseph Nields; 17.03.2017
comment
вы также можете связать его, res.type('json').send({your: 'object'}); или, как указывает @danday74 ниже, просто res.json({your: 'object'}); - person Steve Kehlet; 27.02.2018

Попробуйте этот код:

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

(Я предполагаю, что вы используете последнюю версию Express, 2.0.0)

ОБНОВЛЕНИЕ: я только что провел быстрый тест с использованием Firefox 3.6.x и Live HTTP Headers. Это вывод аддонов:

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

Убедитесь, что вы очистили кеш, прежде чем пытаться.

person schaermu    schedule 23.03.2011
comment
я только что протестировал его на своей локальной установке для разработки, отлично сработало (см. обновление) - person schaermu; 23.03.2011
comment
Ага! По какой-то причине он ссылался на старую версию узла. Благодарю вас! :) - person Kit Sunde; 23.03.2011

вместо res.send()

используйте res.json(), который автоматически устанавливает тип контента на application/json

person danday74    schedule 05.02.2018
comment
это далеко не ответ на вопрос - person sjmeverett; 15.05.2018
comment
Не связанный с вопросом. - person Ed Bishop; 30.09.2018
comment
В моем случае это был именно вопрос: Why isn't express-js setting the Content-Type header? в моем случае в json. Я узнал о res.json() - person ps0604; 17.07.2020