2012-04-27 19 views
1

エンコーディングgzip(iis7)でリクエストを送信するとAjaxが動作しません 私のコードで何か問題が発生しましたか?セキュリティを考慮し、事前エンコーディングでajaxリクエストを送信するgzipが機能していません

function sendRequest(url, callback, postData) 
{ 
    var req = createXMLHTTPObject(); 
    if (!req) { 
     return; 
    } 

    var method = (postData) ? "POST" : "GET"; 
    req.open(method, "xml/" + url, true); 
    req.setRequestHeader('User-Agent', 'XMLHTTP/1.0'); 

    if (postData) { 
     req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
     req.setRequestHeader("Content-Encoding", "gzip"); 

    } 

    req.onreadystatechange = function() { 

    } 

    req.send(postData); 
} 
+1

作業していないとはどういう意味ですか?サーバーは応答する必要はありませんか?間違いはありますか? – Nadh

+1

実際にコンテンツを圧縮しているのですか、ヘッダーを変更して圧縮されているだけですか? postDataはgzipされていますか? –

+0

@dystroyはい、サイズが大きいxmlファイルをダウンロードする場合の圧縮問題が大きい –

答えて

1

この問題は、ヘッダーに関連するのではなく、圧縮に関連するように見えます。

postDataを圧縮していないようです。

postDataが既に圧縮されている場合は、手動でコンテンツエンコーディングを設定する必要はありません。

もしそうでなければ、ブラウザがサーバーとの転送エンコーディングをネゴシエートするようにする(これはプロトコルの一部であり、自動的に行われます。サーバーはそれを受け入れるかどうかを言っていますが、あなたは本当にそれを自分でエンコードする必要があります。このSOの質問は、ブラウザ側を圧縮するライブラリを示しています。JavaScript implementation of Gzip

+1

なぜプログラマはデータ転送のためにgzipを実装する必要がありますか?ブラウザーが自動的に自動的に圧縮する方法が必要です。私のクライアントが10MBの非圧縮jsonペイロードをアップロードするのは常識ではありません。 – Phil

3

おかげで、ブラウザは「コンテンツ・エンコード」を含むいくつかのヘッダを上書きすることはできません。

関連する問題