当我发出通过GET
的{{1}}请求返回204时,没有设置内容类型。如果我提出相同的请求,而是使用grunt-connect-proxy
,PUT
(或grunt-connect-proxy
- 我不知道)会自动将grunt-contrib-connect
附加到响应中。这是一个问题,因为 1)没有内容,因此说内容类型是任何东西都是不准确的。更重要的是 2) Angular尝试将空响应解析为JSON,这会破坏我的应用程序。
我已经通过浏览器测试了端点,实际的服务器没有发回这些额外的信息。
如何阻止Content-type: application/json
(或grunt-connect-proxy
)将内容类型添加到grunt-contrib-connect
响应中?
答案 0 :(得分:0)
我已经解决了这个问题,但我不确定这是不是一个黑客。我不认为其他人会这样做,因为没有其他人在互联网上抱怨它。我的解决方案是添加一个中间件来监视响应中的“标题”事件,如果statusCode是204并且内容类型设置为从标题中删除内容类型。
var apply204 = function(req, res, next) {
res.on('header', function() {
if(res.statusCode === 204) {
if(res._headers['content-type'] !== undefined) {
delete res._headers['content-type'];
}
}
});
next();
};
仍然会对这种情况发生的原因感兴趣。