Hypotetický report.xlsx má 8 KB a otevírá se jako přihlašovací stránka. Program soubor úspěšně uložil, ale zamýšlenou tabulku nikdy nezískal. Název souboru se volí lokálně; není důkazem o tom, co dorazilo.

Udělejte z převzetí samostatný krok před zveřejněním dočasného stažení:

  1. Vyžadujte úspěšný přenos a očekávaný stav odpovědi. Zachovejte chybu, místo abyste bajty zapsané před ní považovali za úplné.
  2. Porovnejte obsah s očekávaným typem souboru. Přihlašovací nebo filtrovací stránka může vrátit 200. Content-Type může být špatný a HTML předpona v tabulce je varování, které je třeba prošetřit. Soubor začínající řádkem stavu HTTP ukazuje spíše na surové rámování odpovědi.
  3. Ověřte úplné uložené bajty proti důvěryhodnému kontrolnímu součtu nebo podpisu, pokud jsou k dispozici. Teprve po splnění požadovaných kontrol by aplikace měla zveřejnit nebo použít konečný soubor.

Výpočet hashe bez očekávané hodnoty identifikuje jen bajty, které jste obdrželi. Nepodepsaný kontrolní součet stažený stejnou nedůvěryhodnou cestou může sdílet slabinu souboru; použijte nezávislé důvěryhodné očekávání.

Dávejte pozor i na porovnávání velikosti. HTTP klient může při čtení dekódovat kódování obsahu, takže výsledná délka souboru se může legitimně lišit od hlavičky popisující zakódovanou zprávu. Porovnávejte očekávání vydavatele s reprezentací, která byla skutečně uložena.

Pokud pokus selže, uchovejte dočasný výstup jen pro záměrné pokračování, nebo ho zahoďte. Ponechání neúplných bajtů na konečné cestě nutí další program hádat, zda jsou použitelné.

Související články