XMLHttpRequest响应在Internet Explorer中没有标题

ori*_*yan 4 javascript extjs xmlhttprequest

我正在使用ExtJS将XMLHttpRequest制作到不返回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);
    }
});
Run Code Online (Sandbox Code Playgroud)

McS*_*tch 5

根据网站http://www.enhanceie.com/ie/bugs.asp,这是IE 7/8错误:

IE0013:IE XMLHTTP实现将204响应代码转换为伪造的1223状态代码

在此处http://dev.jquery.com/ticket/1450中描述 ,如果服务器返回HTTP / 204 No Content响应,则IE中的XMLHTTPRequest对象将返回状态码1223,并删除所有响应头。

这是由URLMon的内部设计工件引起的(如果服务器未响应请求而返回任何内容,则绑定将返回操作异常终止(1223))。

IE8,IE7(可能更早)中的Repros。

解决方法:将“ 1223”视为等同于204。注意:在这种情况下,HTTP标头仍然不可用。

如果您看到的警报为空,则表示IE并未将状态码更改为1223,则该错误的一部分可能已修复。但是,我将更加担心以下声明:

注意:在这种情况下,HTTP标头仍然不可用。

因为这似乎是您面临的问题。您是否需要使用不响应内容的服务?您可能更适合返回带有消息正文的典型响应。