IE XMLhttpRequest getResponseHeader("Content-Length") отсутствует, когда отправляется Content-Encoded
Почему IE не позволяет мне увидеть заголовок Content-Length с getResponseHeader()
?
Я знаю, что туда отправляются заголовки; Я могу видеть их с Wireshark. IE просто не позволит мне получить их.
Если заголовок Content-Encoding НЕ отправляется, независимо от того, доставлен ли контент или нет, я могу получить их просто отлично.
Образец кода:
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 ответ
Вы можете заметить, что многие заголовки отсутствуют, в том числе наиболее значимые для вас: "Content-Encoding: deflate"
Это связано с тем, что после распаковки IE создает поддельные заголовки, согласно MVP: 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, в-е-11? форум = iewebdevelopment