次のような問題があります: Content-Encoded が送信されたときに IE の XMLhttpRequest の getResponseHeader("Content-Length") が存在しない
特定の JS ファイルのファイルサイズを取得しようとしていますが、次のようになります。
var req = this.window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
if (!req) {
throw new Error('XMLHttpRequest not supported');
}
req.open('HEAD', urlToScript, false);
req.send(null);
var size = req.getResponseHeader('Content-Length');
size 変数は、ie < 10 およびnull
ie 10 では空の文字列です。このコードは、FF や Chrome などの他のブラウザでは問題なく動作します。
この問題は、要求されたコンテンツが gzip されている場合にのみ発生するようです。
IE では、次のように印刷すると、ヘッダーに「Content-Length」と「Content-Encoding」がありませんreq.getAllResponseHeaders()
。
Server: Apache-Coyote/1.1
Last-Modified: Wed, 03 Mar 2010 07:01:40 GMT
Expires: Thu, 10 Apr 2014 12:03:27 GMT
Cache-Control: public, max-age=31536000
Content-Type: text/javascript;charset=utf-8
Date: Wed, 10 Apr 2013 12:03:26 GMT
Firefox 20 では、より多くの情報が出力されます。
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Vary: Accept-Encoding
Last-Modified: Wed, 03 Mar 2010 07:01:40 GMT
Expires: Thu, 10 Apr 2014 12:05:24 GMT
Cache-Control: public, max-age=31536000
Content-Type: text/javascript;charset=utf-8
Content-Length: 17669
Date: Wed, 10 Apr 2013 12:05:24 GMT
X-Cache: MISS from somewhere.com
Via: 1.1 somewhere.com:8001 (squid/2.7.STABLE9)
Connection: keep-alive
Proxy-Connection: keep-alive
また、「Content-Type」を「application/javascript」に設定し、手動で「Accept-Encoding」リクエスト ヘッダーを設定しようとしました。何も機能しませんでした。何か案は?