为express app中的JSON请求设置正确的内容类型
Set correct content type for JSON requests in express app
我是一个非常新的节点,并试图建立一个简单的后端解决方案来处理我的主干应用程序中的路由。现在我把所有东西都路由到index。html。我的问题是,当我提出数据请求时,当我需要Content-Type:application/json
时,响应会返回Content-Type:text/html; charset=UTF-8
。我知道我需要在某个地方设置这个标题,但不确定在哪里,想知道是否有人可以帮助?
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);
});
您需要在get方法中执行
添加res.setHeader("Content-Type", "application/json");
sendFile前https://nodejs.org/api/http.html http_response_setheader_name_value
你也可以使用中间件:
在express中可以使用express.static(root, [options])
其中一个选项可以是:setHeaders
function
查看这些链接:
- 使用Express.JS发送额外的http头文件
- http://expressjs.com/api.html
- http://expressjs.com/starter/static-files.html
这是另一种方法。
正如上面的答案所指出的,您可以向express.static
传递额外的参数。
*.json
文件,你应该把这段代码放在你的*
路由:
app.use('/scripts', express.static(__dirname + '/scripts'), {
setHeaders: function(res) {
res.setHeader("Content-Type", "application/json");
}
});
相关文章:
- 可以't将几个数字设置为<输入类型=“;数字“>
- 在输入类型日期中设置日期
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 未捕获的类型错误:无法设置属性'背景'的未定义
- 如何设置类型化对象的属性,同时保留它's类型
- 如何在jQuery Mobile中设置100%宽度的输入类型日期
- jQuery Modal Popup-回发后输入类型设置为null
- 可以设置输入类型=文件的文本框的高度
- 使用第 n 个类型设置一组八个元素的样式
- 使用整数数据类型设置“选择Dropbox值”
- 当类型设置为JSON时,如何检查AJAX响应字符串
- 情节.js为类型设置时区:“日期”
- 客户端将多部分/表单数据请求的文件部分的内容类型设置错误
- 如何在Script标记中将json头接受和内容类型设置为URL
- 为什么当我将类型设置为按钮(而不是提交)时,按钮仍要提交表单
- 如何使用javascript从输入隐藏类型设置输入类型文件中的值
- 当从node.js返回json时,无法将内容类型设置为application/javascript
- 我有一个输入,它的's类型设置为隐藏,我需要改变它的's类型为文本.我似乎无法弄清楚这一点,或者它是否可
- 如何根据标记类型设置不同颜色的标记,以及如何确定它们的坐标?我使用openlayers.org库
- 当数据类型设置为 JSONP 时读取 JSON 响应