2016-10-25 7 views
2

私はタールに大量のデータファイルをまとめて返す&という読者のサーバーを持っています。私はこの作品は&作品をテストしていると、すべてのデータが読み込まれると、すべての良いです。HTTP経由で大量のバイナリファイルをストリーミングするときのHTTPエラーコード?

問題は、ダウンロードを中断する予期しないエラーが発生する可能性があることです。私は現在、HTTPエラーコード&をエラーメッセージとして書きますが、エラーメッセージはストリーム/ファイルの最後に置かれます。途中で輸出が失敗したことを知らせる良い方法はありますか?エラーメッセージを提供するHTTPステータスコード&でこれを行うことは可能ですか?

私は、次のcurlコマンドを使用しています:

curl --insecure https://127.0.0.1/api/export/030e28f3-4ab6-446a-852e-fda0a497ffe2 -o "test.tar" 

は、私が(あまりにも)エラーを検出するためにcurlコマンドを変更する必要がありますか?

答えて

1

ダウンロードが既に開始されている場合、すべてのHTTPヘッダーはすでにHTTPクライアントに送信されています。 は、(これは最初の行にあります)のステータスコードを書き換えることはできません。

あなたができる唯一のことは、tcp/ip接続を切断することです。 'Content-Length'ヘッダーを使用した場合、クライアントは転送が完了していないことを確認します。 'Transfer-Encoding:chunked'を使用した場合、クライアントはチャンクの終わりのマーカーが受信されていないことを確認します。すべての場合、これは転送全体を無効にします。

あなたは範囲部分コンテンツ応答を要求し、いくつかのHTTPリクエスト・レスポンスダイアログにコンテンツを送信して遊びに試みることができます。しかし、単一のHTTPダイアログで大きなファイルの送信を管理している場合は、送信を中断し、完全に開始することしかできません。

通常、チャンク内の大きなファイル転送は、アプリケーションレイヤーで、HTTP上で管理されます。アップロードの場合と同様に、javascriptのものは、ファイルを塊で爆発させ、専用のプロトコルを使用してファイルを再構築して、専用のアプリケーションサーバーに送り返します。これは、現実の野生のHTTP環境では、長時間の送信が難しく、すべての潜在的なプロキシによって範囲/部分コンテンツの送信があまりうまく管理されていないためです。一方で、単純な中規模のHTTPリクエストを使用することは、ほぼすべての場所で動作します。したがって、クライアント側とサーバー側の両方を制御する場合は、HTTPの上に独自のダイアログを作成し、エラー管理機能を備えた独自のチャンク送信プロトコルを作成することができます。

関連する問題