Приложение для отправки 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();
};
Еще бы было интересно, почему это происходит.