問題タブ [transfer-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3768 参照

python - nginx、uwsgi、およびフラスコを使用したチャンク転送エンコーディングのヘッダーで返される Content-Length

nginx、uwsgi、およびフラスコでチャンク転送エンコーディングを使用すると、Content-Length常にTransfer-Encoding: chunked. ただし、HTTP 1.1 ではこの動作が禁止されています。nginx と uwsgi を構成して目的の動作を実現しようとしましたが (Content-Lengthヘッダーにない場合Transfer-Encoding: chunked)、成功しませんでした。まず、サーバーとクライアントのコードがあります。

サーバーコード ( server.py):

クライアント コード ( client.py):

サーバーを実行し、クライアントでサーバーに接続しようとすると、次の出力が得られます。サーバー出力:

クライアント出力:

今のところ、すべて問題ないようです。ヘッダーには、Transfer-EncodingなしがありContent-Lengthます。ここで、uwsgi ( uwsgi.py) を組み込んでみます:

次のコマンドを実行します。

出力は、前の試行と同じです。したがって、まだ予想どおりです。では、nginx をデプロイしてみます。私の uwsgi 設定 ( uwsgi.ini):

私のnginx構成(/etc/nginx/nginx.conf):

nginx を起動してから実行します。

現在、出力には次が含まれていますContent-Length

nginx: proxy_request_bufferingproxy_bufferingproxy_http_versionおよびとのコンテキストでさまざまな設定を試してみましたが、成功しませんでしたchunked_transfer_encoding。ヘッダーに追加しましたが、問題は解決しませんでした。また、目的の動作を達成せずに uwsgi: 、、のさまざまなオプションを試しました (のヘッダーにはまだ存在します)。serverlocationX-Accel-Buffering: nowsgi-manage-chunked-inputhttp-raw-bodyhttp-auto-chunkedhttp-chunked-inputContent-LengthTransfer-Encoding: chunked

次のバージョンのフラスコ、uwsgi、nginx を使用しています。

何が間違っている可能性がありますか?ありがとう。