grunt-connect-proxy发送应用程序/ json内容类型以进行204响应

时间:2014-10-22 13:47:41

标签: angularjs gruntjs http-proxy grunt-contrib-connect grunt-connect-proxy

当我发出通过GET的{​​{1}}请求返回204时,没有设置内容类型。如果我提出相同的请求,而是使用grunt-connect-proxyPUT(或grunt-connect-proxy - 我不知道)会自动将grunt-contrib-connect附加到响应中。这是一个问题,因为 1)没有内容,因此说内容类型是任何东西都是不准确的。更重要的是 2) Angular尝试将空响应解析为JSON,这会破坏我的应用程序。

我已经通过浏览器测试了端点,实际的服务器没有发回这些额外的信息。

如何阻止Content-type: application/json(或grunt-connect-proxy)将内容类型添加到grunt-contrib-connect响应中?

1 个答案:

答案 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();
};

仍然会对这种情况发生的原因感兴趣。