Ответ XMLHttpRequest не имеет заголовков в Internet Explorer - PullRequest
3 голосов
/ 24 ноября 2010

Я делаю XMLHttpRequest, используя ExtJS для сервиса, который не возвращает responseText, только 204 и заголовок ответа TotalNearby .Вызов работает отлично с использованием Firefox, но в Internet Explorer 8 оба поля предупреждения пусты.Что я делаю не так?

Ext.Ajax.request({
    url: 'services/getNearby',
    method: 'GET',
    params: {
        'lat': 34,
        'lon': -90
    },
    headers: {
        'Authorization': AUTH_TOKEN
    },
    success: function(response) {
        if (response.status == 204) {
            alert(response.getAllResponseHeaders());
            alert(response.getResponseHeader('Total-Nearby'));
        }
    },
    failure: function(response) {
        alert('Server status ' + response.status);
    }
});

1 Ответ

4 голосов
/ 24 ноября 2010

По данным сайта http://www.enhanceie.com/ie/bugs.asp это ошибка IE 7/8:

IE0013: реализация IE XMLHTTP превращает код ответа 204 в поддельный код состояния 1223

Описано здесь http://dev.jquery.com/ticket/1450, объект XMLHTTPRequest в IE вернет код состояния 1223 и отбросит все заголовки ответа, если сервер вернет ответ HTTP / 204 No Content.

Это вызвано внутренним артефактом разработки URLMon (привязка возвращает операцию «Прервано» (1223), если сервер не возвращает содержимое в ответ на запрос).

Репро в IE8, IE7 (ивозможно раньше).

Обходной путь: Обработайте «1223» как эквивалент 204. Примечание: в этом случае заголовки HTTP остаются недоступными.

Если вы видите пустые предупреждения, то есть IEне изменил код состояния на 1223, тогда эта часть ошибки могла быть исправлена.Тем не менее, я бы больше беспокоился об этом утверждении:

Примечание. В этом случае заголовки HTTP остаются недоступными.

, так как это, похоже, проблема, с которой вы столкнулись,Вам нужно использовать сервис, который не отвечает с контентом?Возможно, вам лучше подойдет типичный ответ с телом сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...