代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

发送内容编码时IE的XMLhttpRequest的getResponseHeader(“内容长度”)不存在

  •  4
  • David Murdoch  · 技术社区  · 14 年前

    为什么IE不让我看看get的内容长度标题 getResponseHeader() ?

    我知道邮件头正在发送;我可以用Wireshark看到它们。只是不让我拿。

    如果没有发送内容编码头,不管内容是否gzip,我都可以很好地得到它们。

    示例代码:

        function getXMLHttpRequest() {
            if (window.XMLHttpRequest) {
                return new window.XMLHttpRequest;
            }
            else {
                try {
                    return new ActiveXObject("MSXML2.XMLHTTP.3.0");
                }
                catch (ex) {
                    return null;
                }
            }
        }
        function handler() {
            if (oReq.readyState == 4 /* complete */) {
                if (oReq.status == 200) {
                    // this alert will be missing Content-Length 
                    // and Content-Encoding if Content-Encoding is sent.
                    alert(oReq.getAllResponseHeaders());
                }
            }
        }
    
        var oReq = getXMLHttpRequest();
    
        if (oReq != null) {
            oReq.open("GET", "http://www.example.com/gzipped/content.js", true);
            oReq.onreadystatechange = handler;
            oReq.send();
        }
        else {
            window.alert("AJAX (XMLHTTP) not supported.");
        }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Roman Pokrovskij Peterdk    8 年前

    您可能会注意到许多标题都没有,包括对您最重要的标题:“Content Encoding:deflate”

    这是因为根据MVP,解压后IE会生成假头文件: https://social.msdn.microsoft.com/Forums/ie/en-US/b2cc04ca-1d4e-4381-9750-361128987e2f/http-response-header-variable-returns-null-in-ie-11?forum=iewebdevelopment