Приложение для отправки grunt-connect-proxy / тип содержимого json для ответа 204

Когда я делаю GET запрос, который проходит через grunt-connect-proxy который возвращает 204, тип содержимого не установлен. Если я сделаю тот же запрос, но вместо этого с помощью PUT, grunt-connect-proxy (или же grunt-contrib-connect - я не знаю) прикрепляет Content-type: application/json на ответ автоматически. Это проблема, потому что 1) Контента нет, поэтому неточно говорить, что тип контента - это что-то. и что более важно 2) Angular пытается проанализировать пустой ответ как JSON, который нарушает работу моего приложения.

Я протестировал конечную точку через свой браузер, и реальный сервер не отправляет эту дополнительную информацию обратно.

Как я могу предотвратить grunt-connect-proxy (или же grunt-contrib-connect) от добавления типа контента к 204 No Content ответ?

1 ответ

Я исправил проблему, но не уверен, что это взлом. Я не думаю, что другие люди должны были бы делать это, потому что никто больше не жаловался на это в Интернете. Мое решение состояло в том, чтобы добавить промежуточное программное обеспечение, чтобы наблюдать событие 'header' в ответе, и если 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();
};

Еще бы было интересно, почему это происходит.

Другие вопросы по тегам