Izvještaj se otvara u pregledniku, parametri se prikazuju, a dugme za izvoz proizvodi grešku, prazno preuzimanje ili datoteku koju tabela odbija otvoriti. Ta kombinacija ima standardan oblik. Radna stranica izvještaja testirala je renderovanje i autentifikaciju i ništa drugo. Izvoz je odvojen zahtjev sa sopstvenim odgovorom, a kroz portal bez klijenta prolazi i kroz sloj prepisivanja koji nikada nije bio projektovan za preuzimanje datoteka.

Dva puta, jedna radna stranica

Renderovanje i izvoz su različite operacije čak i kada počinju s istog dugmeta. Server izvještaja renderuje stranicu za preglednik i priprema izvoz kroz drugo izlazno proširenje sa sopstvenim tipom sadržaja i sopstvenim ponašanjem pri grešci, kako opisuje dokumentacija za izvoz. Portal koji prvo propušta besprijekorno ipak može unakaziti drugo, jer drugo je odgovor koji portal nije očekivao vidjeti. Dvoje dijele sesiju i adresu, i gotovo ništa drugo.

Tretirajte radnu stranicu samo kao dokaz autentifikacije i dostupnosti. Ona dokazuje da račun može doći do servera izvještaja i da portal prosljeđuje HTML. Ne govori ništa o odgovorima s datotekama, zaglavljima rasporeda sadržaja ili preusmjeravanjima koja završavaju preuzimanjem, a ne dokumentom.

To je cijeli razlog da se put izvoza uporedi zasebno, umjesto da se ponovo testira stranica koja već radi. Dva zahtjeva koja dijele sesiju i dalje su dva zahtjeva.

Tri uslova koja odlučuju gdje se izvoz lomi

Tri pitanja brzo smještaju kvar, a svaki odgovor pokazuje na drugog vlasnika.

Prvo, izvozi li se isti izvještaj, račun i format ispravno iz interne mreže? Ako izvozi, server izvještaja i njegov renderer su u redu, a razlika je u putu pristupa. Drugo, nosi li neuspjeli odgovor tip sadržaja datoteke, ili HTML stranicu s nastavkom datoteke? To razdvaja grešku renderera od zamjene koju je napravio portal. Treće, prepisuje li portal URL zahtjeva ili uklanja zaglavlja iz odgovora? Prepisani URL može stići na sasvim drugu krajnju tačku.

Odgovorite na sva tri prije nego što promijenite postavku, jer svako ima drugačiji lijek. Kvar renderera pripada serveru izvještaja, zamijenjeno tijelo pripada portalu, a uklonjeno zaglavlje je pitanje politike, a ne greška.

Zapišite odgovore. Zahtjev za podršku sastavljen od tih tri reda vrijedi deset snimaka ekrana.

Čitajte odgovor izvoza, a ne statusni kod

HTTP status uspjeha dokazuje samo da je nešto odgovorilo na zahtjev. Pregledajte tijelo i zaglavlja zajedno, jer zanimljiv kvar je uspješan odgovor s pogrešnim sadržajem.

curl -sS -D export.headers -o export.bin --location "https://portal.example.com/reports/export?format=xlsx"
file export.bin
head -c 300 export.bin

Ispis zaglavlja pokazuje tip sadržaja i svaki raspored sadržaja koji je portal vratio. Naredba file identificira šta tijelo zapravo jest, a tekstualna datoteka tamo gdje se očekuje tabela klasična je zamijenjena stranica za prijavu. Naredba head pokazuje dovoljno da prepoznate HTML bez izbacivanja cijelog izvještaja u terminal.

Uklonite kolačiće sesije i tokene prije nego što bilo šta od toga podijelite. Snimak radnog izvoza koristan je dokaz, a snimak sesije koja pripada nekome drugom je incident.

Ograničite izuzetak na aplikaciju, ne na račun

Ako portal prepisuje ili blokira odgovor, primamljiv popravak je izuzeti cijelu lokaciju ili učiniti izvještaj anonimnim. Oboje popravlja preuzimanje i uklanja razlog zbog kojeg portal postoji. Suzani izuzetak imenuje jednu putanju aplikacije, jedan tip sadržaja i jedan smjer, i ostaje pregledan onome ko posjeduje politiku.

Koristite verziju mrežnog prolaza koju zaista pokrećete i njegove dokumentovane postavke aplikacije. Opcija koju je dobavljač nekada opisao kao onu koja ostavlja promet nepromijenjen nije opšte uputstvo, a kopiranje iz stare forumske teme put je da privremeni izuzetak postane trajna arhitektura.

Ako se izuzetak ne može tako usko suziti, izvoz vjerovatno pripada internom putu s drugačijim načinom pristupa, a ne iza portala. Izuzimanje cijele lokacije odluka je za vlasnika portala, a ne zaobilaznica za jedan izvještaj.

Prihvatite izvoz, a ne dijalog za čuvanje

Posljednja provjera je sama datoteka: otvara se, sadrži očekivane kolone, a njeni zbrojevi odgovaraju izvještaju koji je korisnik odobrio.

Pojava dijaloga za čuvanje nije uspjeh, a datoteka koja se otvara s upozorenjem o popravci također nije uspjeh. Uporedite broj redova i jednu poznatu vrijednost s izvještajem na ekranu, jer skraćeni izvoz prolazi svaki test koji gleda samo veličinu datoteke. Zatim izvezite drugi put, jer sloj keša koji jednom posluži pogrešno tijelo može sljedeći put poslužiti ispravno.

Prihvatite radni tok koji je korisniku trebao, i ništa manje od toga. Preuzimanje koje se otvori u pogrešnoj aplikaciji i dalje je neuspjeli izvoz.

Povezani članci