Zostava sa otvorí v prehliadači, parametre sa vykreslia a tlačidlo exportu vyvolá chybu, prázdne stiahnutie alebo súbor, ktorý tabuľkový procesor odmietne otvoriť. Táto kombinácia má štandardnú podobu. Fungujúca stránka zostavy otestovala vykreslenie a overenie a nič iné. Export je samostatná požiadavka s vlastnou odpoveďou a cez portál bez klienta prechádza aj vrstvou prepisovania, ktorá nikdy nebola navrhnutá na sťahovanie súborov.

Dve cesty, jedna fungujúca stránka

Vykreslenie a export sú rôzne operácie, aj keď začínajú rovnakým tlačidlom. Server zostáv vykreslí stránku pre prehliadač a export pripraví cez iné výstupné rozšírenie s vlastným typom obsahu a vlastným správaním pri chybe, ako opisuje dokumentácia k exportu. Portál, ktorý prvý prepustí bezchybne, môže druhý stále zkomoliť, pretože druhý je odpoveď, ktorú portál neočakával. Obe zdieľajú reláciu a adresu a takmer nič ďalšie.

Berte fungujúcu stránku len ako dôkaz overenia a dostupnosti. Dokazuje, že účet dosiahne na server zostáv a že portál odovzdáva HTML. Nič nehovorí o odpovediach so súbormi, hlavičkách umiestnenia obsahu alebo presmerovaniach, ktoré končia stiahnutím, nie dokumentom.

To je celý dôvod porovnávať cestu exportu samostatne, namiesto opätovného testovania stránky, ktorá už funguje. Dve požiadavky, ktoré zdieľajú reláciu, sú stále dve požiadavky.

Tri podmienky, ktoré určujú, kde sa export zlomí

Tri otázky rýchlo určia miesto poruchy a každá odpoveď ukazuje na iného vlastníka.

Po prvé, exportuje sa tá istá zostava, účet a formát správne z internej siete? Ak áno, server zostáv a jeho vykresľovač sú v poriadku a rozdiel je v prístupovej ceste. Po druhé, nesie neúspešná odpoveď typ obsahu súboru, alebo stránku HTML s príponou súboru? To oddeľuje chybu vykresľovača od zámeny portálom. Po tretie, prepisuje portál URL požiadavky alebo odstraňuje hlavičky z odpovede? Prepísaná URL môže skončiť na úplne inom koncovom bode.

Odpovedzte na všetky tri pred zmenou nastavenia, pretože každá má inú nápravu. Porucha vykresľovača patrí serveru zostáv, nahradené telo patrí portálu a odstránená hlavička je otázka politiky, nie chyba.

Odpovede si zapíšte. Prípad podpory postavený na týchto troch riadkoch má cenu desiatich snímok obrazovky.

Čítajte odpoveď exportu, nie stavový kód

Úspešný stav HTTP dokazuje len to, že niečo na požiadavku odpovedalo. Prezrite telo aj hlavičky spoločne, pretože zaujímavá porucha je úspešná odpoveď s nesprávnym obsahom.

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

Výpis hlavičiek ukazuje typ obsahu a akékoľvek umiestnenie obsahu, ktoré portál vrátil. Príkaz file určí, čo telo skutočne je, a textový súbor tam, kde sa očakáva tabuľka, je klasická nahradená prihlasovacia stránka. Príkaz head ukáže dosť na rozpoznanie HTML bez vysypania celej zostavy do terminálu.

Odstráňte relácie cookies a tokeny, skôr než čokoľvek z toho zdieľate. Záznam fungujúceho exportu je užitočný dôkaz a záznam relácie, ktorá patrí niekomu inému, je incident.

Zúžte výnimku na aplikáciu, nie na účet

Ak portál odpoveď prepisuje alebo blokuje, lákavou opravou je vyňať celý web alebo urobiť zostavu anonymnou. Oboje opraví sťahovanie a odstráni dôvod, prečo portál existuje. Zúžená výnimka pomenuje jednu cestu aplikácie, jeden typ obsahu a jeden smer a zostáva preskúmateľná tým, kto vlastní politiku.

Použite verziu brány, ktorú skutočne prevádzkujete, a jej dokumentované nastavenia aplikácie. Voľba, ktorú dodávateľ raz opísal ako ponechávajúcu prevádzku bez zmeny, nie je všeobecný pokyn a kopírovanie zo starého vlákna fóra je spôsob, akým sa dočasná výnimka stane trvalou architektúrou.

Ak výnimku nemožno tak úzko obmedziť, export pravdepodobne patrí na internú cestu s iným spôsobom prístupu, nie za portál. Plošné vyňatie je rozhodnutie pre vlastníka portálu, nie obchádzka pre jednu zostavu.

Prijmite export, nie dialóg Uložiť

Poslednou kontrolou je samotný súbor: otvorí sa, obsahuje očakávané stĺpce a jeho súčty zodpovedajú zostave, ktorú používateľ schválil.

Zobrazenie dialógu Uložiť nie je úspech a súbor, ktorý sa otvorí s upozornením na opravu, tiež nie je úspech. Porovnajte počet riadkov a jednu známu hodnotu so zostavou na obrazovke, pretože skrátený export prejde každým testom, ktorý sa pozerá len na veľkosť súboru. Potom exportujte druhýkrát, pretože vrstva vyrovnávacej pamäte, ktorá raz poslúži nesprávne telo, môže pri ďalšom pokuse poslúžiť správne.

Prijmite pracovný postup, ktorý používateľ potreboval, a nič menej. Stiahnutie, ktoré sa otvorí v nesprávnej aplikácii, je stále neúspešný export.

Súvisiace články