node.js と express.js を使用して、単純な http サーバーを自分で実行しています。
var express = require('express');
express().use(express.static(__dirname)).listen(3000);
私の静的コンテンツ フォルダーには、テスト用の 2 つのファイルがあります:myfile.csv
とmyfile.csv.gz
. サイズはそれぞれ 685 バイトと 403 バイトです。私はcurl -I
彼らの応答ヘッダーを表示していました。フィールドはContent-Length
、ファイル サイズを正しく反映します。
curl -I http://localhost:3000/myfile.csv
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
ETag: "685-1377648449000"
Date: Wed, 28 Aug 2013 11:12:40 GMT
Cache-Control: public, max-age=0
Last-Modified: Wed, 28 Aug 2013 00:07:29 GMT
Content-Type: text/csv; charset=UTF-8
Content-Length: 685
Connection: keep-alive
curl -I http://localhost:3000/myfile.csv.gz
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
ETag: "403-1377677249000"
Date: Wed, 28 Aug 2013 11:12:48 GMT
Cache-Control: public, max-age=0
Last-Modified: Wed, 28 Aug 2013 08:07:29 GMT
Content-Type: application/octet-stream
Content-Length: 403
Connection: keep-alive
次に、クライアント ブラウザーで 2 つのファイルをフェッチするために、以下の JavaScript コード スニペットを記述します。のサイズである 685 を正しく警告しmyfile.csv
ます。
$.ajax({
type: 'GET',
url: "myfile.csv",
dataType: "text",
success: function (result) {
alert(result.length);
},
});
ただし、url フィールドを に変更するmyfile.csv.gz
と、スクリプトは 403 ではなく 387 を警告します。 の完全なコンテンツを取得できませんmyfile.csv.gz
。どうしたの?
「テキスト」から「アプリケーション」に変更しようとしdataType
ましたが、「テキストからアプリケーションへの変換がありません」という「解析エラー」が発生しました。
も追加してみましheaders: { "Accept-Encoding": "gzip" }
たが、「安全でないヘッダー「Accept-Encoding」の設定を拒否しました」というエラーが発生しました。
クライアントブラウザでjQueryを使用してgzipファイルの全コンテンツを取得するにはどうすればよいですか?