在路由功能的结尾,当我做这样的事情时。
res.send(JSON.stringify({...}));
我希望将响应的内容类型设置为“文本/纯文本”,但是它是“文本/ html”。有没有办法明确设置它?我搜索了文档,但没有任何线索。
答案 0 :(得分:5)
setHeader,然后发送:https://nodejs.org/api/http.html#http_response_setheader_name_value
res.setHeader('content-type', 'text/plain');
res.send(JSON.stringify({...}));
答案 1 :(得分:4)
有几种方法可以实现此目的,其中最干净/最简单的方法是(假设根据标签使用express;如果不使用expressjs,请参见最终答案选项):
res.type('txt');
res.send(JSON.stringify({...}));
这是使用res.type
的,它提供了许多速记方式,并且能够设置显式的mime类型,例如(还有其他):
res.type('.html') // => 'text/html'
res.type('html') // => 'text/html'
res.type('json') // => 'application/json'
res.type('application/json') // => 'application/json'
res.type('png') // => 'image/png'
res.type('mp3') // => 'audio/mp3'
在撰写本文时,根据implemented,这是res.set
,也可以直接称为:
res.set('content-type', 'text/plain');
res.send(JSON.stringify({...}));
这些是执行此功能的正式记录方式(除了res.header
也是res.set
的别名)。但是,似乎响应对象是从http.ServerResponse
派生的,因此,响应对象也具有use方法(在实现中为setHeader
),其用法与{ {1}},没有与res.set
完全相同的功能(某些检查未完成,等等)。但是它确实完成了基本工作,因此完全有可能找到代码在野外会解决您这个问题的目标(尤其是如果它不是快速应用程序,而是使用http
包):
res.set
(作为一个旁注:每个RFC 7230(以前是RFC 2616),标头名称都是大小写敏感的。也就是说,res.setHeader('Content-Type', 'text/plain');
res.send(JSON.stringify({...}));
大写是RFC 7231中使用的,它定义了它的含义和用法,也是Content-Type
将要使用的。也就是说,我已经看到至少res.type
的一些示例-小写的标头名称,因此我想证明两者都有可能。)
答案 2 :(得分:3)
您可以尝试res.set
设置Content-Type
标头,如下所示:
res.set('content-type', 'text/plain');
res.send(JSON.stringify({...}));
答案 3 :(得分:0)
你也可以使用
res.set('content-type', 'text/plain')