保存されたファイルはまだ検証済みのダウンロードではない
公開や使用の前に、プロキシ経由のダウンロードが期待する成果物を含み、認証ページや不完全な応答ではないことを確認してください。
架空の report.xlsx は 8 KB で、ログインページとして開きます。プログラムはファイルの保存に成功しましたが、目的のスプレッドシートを取得できていません。ファイル名はローカルで選ばれるものであり、何が届いたかの証拠にはなりません。
一時ダウンロードを公開する前に、受け入れを独立した手順にしてください。
- 転送の成功と期待する応答ステータスを要求する。 その前に書き込まれたバイトを完全なものとして扱うのではなく、エラーを保持する。
- 内容を期待する成果物の種類と比較する。 ログインやフィルタのページが 200 を返すことがあります。Content-Type が誤っていることもあり、スプレッドシート内の HTML 接頭辞は調査が必要な警告です。HTTP ステータス行で始まるファイルは、むしろ生の応答フレーミングを示します。
- 取得可能な場合は、保存された全バイトを信頼できるチェックサムや署名で検証する。 アプリケーションは、必要な検査に合格した後にのみ最終ファイルを公開または使用すべきです。
期待値なしでハッシュを計算しても、受け取ったバイトを特定できるだけです。同じ信頼できない経路で取得した署名のないチェックサムは、成果物の弱点を共有する可能性があります。独立した信頼できる期待値を使ってください。
サイズの比較にも注意してください。HTTP クライアントは読み取り中に内容の符号化を復号することがあるため、結果のファイル長は符号化されたメッセージを記述したヘッダーと正当に異なる場合があります。公開側の期待値と、実際に保存された表現を比較してください。
試行が失敗した場合、一時出力は意図的な再開のためにのみ保持するか、破棄してください。不完全なバイトを最終パスに残すと、次のプログラムが使用可能かどうかを推測せざるを得なくなります。