特定のエンコーディングを使用しないようにサーバーに要求するには、値のリストを提供する必要がありますAccept-Encoding
。RFC2616 (HTTP/1.1)のセクション 14.11 から、次のいずれかの形式があることがわかります (値は例です)。
Accept-Encoding: compress, gzip
Accept-Encoding:
Accept-Encoding: *
Accept-Encoding: compress;q=0.5, gzip;q=1.0
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0
content-coding が Accept-Encoding フィールドにリストされている content-codings の 1 つである場合、qvalue が 0 でない限り、受け入れられます (セクション 3.9 で定義されているように、0 は「受け入れられない」ことを意味します)。
次に、サーバーに圧縮を使用しないように要求gzip
するには、空の文字列の代わりに、次の値を指定する必要がありますAccept-Encoding
。
gzip;q=0
これには、サーバーがそれを使用しないようにする必要がありますが、別のエンコーディングを提供する必要があります。利用可能なエンコーディングについては、セクション 3.5 を参照してください。品質q
パラメーターを使用して、サーバーに好みを通知します (要求に対してそのエンコーディングを提供できない場合、サーバーはエラー 406 で応答することを忘れないでください)。
identity;q=1.0, gzip=0.5
このようにして、エンコーディングを使用するように要求しidentity
、それが利用できない場合は、エンコーディングも受け入れることができgzip
ます (これにより、何らかの理由でリクエストに他のエンコーディングを使用できない場合に、サーバーがエラーで応答するのを防ぐことができます)。 )。他のエンコーディングのパフォーマンスも試すことができます (たとえば、compress
および)。deflate
コード
最後に、 を使用する必要がありますIXMLHttpRequest2::SetRequestHeader(L"Accept-Encoding", L"identity;q=1.0, gzip=0.5")
。SetRequestHeader では、デフォルトで送信されるヘッダーへの追加であることがわかります。そのため、空の文字列を指定すると、実際には値は変更されません (実際、どのように解釈されるかはサーバーに依存する可能性があります。これに関する適切な仕様は見つかりませんでした) 、実際に送受信されたものを確認するために HTTP リクエストとレスポンスの両方を調べることができます)。
古い値:Accept-Encoding: compress
呼び出し:IXMLHttpRequest2::SetRequestHeader(L"Accept-Encoding", L"")
新しい値:Accept-Encoding: compress