0

当我发出一个返回 204 的GET请求grunt-connect-proxy时,没有设置内容类型。如果我提出相同的请求但使用PUT, grunt-connect-proxy(或grunt-contrib-connect- 我不知道)会Content-type: application/json自动附加到响应中。这是一个问题,因为1)没有内容,所以说内容类型是什么是不准确的。更重要的是2) Angular 尝试将空响应解析为 JSON,这会破坏我的应用程序。

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

如何防止grunt-connect-proxy(或grunt-contrib-connect)向204 No Content响应中添加内容类型?

4

1 回答 1

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

仍然会对为什么会发生这种情况感兴趣。

于 2014-10-22T14:36:31.210 回答