3

IIS7でasp.netmvcアプリケーションを実行しています。クライアントによっては、応答が「チャンク転送エンコーディング」として受信される場合があるという問題があります。理解できないのはその理由です。これは、一部のクライアントでのみ発生します(2台のコンピューターが同じブラウザー(IE 8)を使用して同じネットワーク上にあり、全員ではない場合、またはその逆の場合でも)。

誰かが私にこれを説明できますか?

この更新が遅れて申し訳ありませんが、問題はユーザーがサーバーに到達した方法の結果であることが判明しました。ユーザーがVPN接続を介してローカルLANに接続されている場合、プロキシは回避されます。そうでない場合は、プロキシが使用されます。これにより、2つの異なる結果が得られました。

4

2 に答える 2

2

出力ストリームを時期尚早にフラッシュすると、サーバー側でチャンク エンコーディングが有効になります。Flush() を呼び出している可能性のあるユーザー エージェント固有のコードはありますか?

于 2009-11-19T07:20:27.417 に答える
1

RFC 2616 は次のように述べています

すべての HTTP/1.1 アプリケーションは、「チャンクされた」転送コーディングを受信して​​デコードできなければなりません (MUST)。

Transfer-Encoding: chunkedは HTTP/1.1 用に定義されています。一部のクライアントは HTTP/1.0 または (身震いする) 0.9 を使用していますか? その場合、サーバーは転送エンコードを使用してはなりません。これはプロトコルの一部ではないためです。

最新のクライアントのほとんどは HTTP/1.1 を理解していますが、ほとんどの場合、プロキシを使用するときに 1.0 にダウングレードするオプションがあります (歴史的な理由から、一部の古いプロキシにはバグのある 1.1 実装がありました)。したがって、ブラウザは 1.1 を理解しても、指示があれば 1.0 を要求できます。

例: MSIE 6+ では、[インターネット オプション] ダイアログ - タブAdvanced-HTTP 1.1 settingsチェックボックス " Use HTTP 1.1" および " Use HTTP 1.1 through proxy connections" にこれがあります。

また、チャンク エンコーディングはすべての応答に対してアクティブ化されるわけではありません。通常、Content-Length が設定されていない場合、または出力バッファがフラッシュされた場合、サーバーはオンに切り替えます。

于 2009-11-19T07:28:49.553 に答える