我对节点很新,并尝试设置一个简单的后端解决方案来处理我的Backbone应用程序中的路由。现在我将所有内容都路由到index.html。我的问题是当我发出数据请求时,当我需要Content-Type:text/html; charset=UTF-8
时,响应会返回Content-Type:application/json
。我知道我需要在某个地方设置此标题,但不确定在哪里,并且想知道是否有人可以提供帮助?
JS
var express = require('express');
var port = 8000;
var server = express();
server.use('/dist', express.static(__dirname + '/dist'));
server.get('scripts/data/*.json', function(req, res) {
return res.json({
success: true
})
});
server.get('*', function(req, res){
return res.sendFile(__dirname + '/index.html');
});
server.listen(port, function() {
console.log('server listening on port ' + port);
});
答案 0 :(得分:3)
您需要在get方法
中执行此操作添加
res.setHeader("Content-Type", "application/json");
在sendFile之前
https://nodejs.org/api/http.html#http_response_setheader_name_value
您也可以使用中间件:
在快递中,您可以使用express.static(root, [options])
其中一个选项可以是:setHeaders
功能
检查以下链接:
答案 1 :(得分:0)
这是另一种方法。
正如上面的答案中所指出的,您可以将其他参数传递给express.static
。
因此,为了提供您的*.json
文件,您应该将此代码放在*
路线上:
app.use('/scripts', express.static(__dirname + '/scripts'), {
setHeaders: function(res) {
res.setHeader("Content-Type", "application/json");
}
});