Ataskaita atsidaro naršyklėje, parametrai atvaizduojami, o eksporto mygtukas sukuria klaidą, tuščią atsisiuntimą arba failą, kurio skaičiuoklė atsisako atidaryti. Šis derinys turi standartinę formą. Veikiantis ataskaitos puslapis išbandė atvaizdavimą ir autentifikavimą ir nieko daugiau. Eksportas yra atskira užklausa su savo atsakymu, o per portalą be kliento jis taip pat praeina per perrašymo sluoksnį, kuris niekada nebuvo projektuotas failų atsisiuntimams.

Du keliai, vienas veikiantis puslapis

Atvaizdavimas ir eksportas yra skirtingos operacijos, net kai jos prasideda nuo to paties mygtuko. Ataskaitų serveris atvaizduoja puslapį naršyklei ir eksportą atvaizduoja per kitą išvesties plėtinį su savo turinio tipu ir savo klaidų elgsena, kaip aprašo eksporto dokumentacija. Portalas, kuris pirmąjį praleidžia nepriekaištingai, vis tiek gali sugadinti antrąjį, nes antrasis yra atsakymas, kurio portalas nesitikėjo pamatyti. Abu dalijasi sesija ir adresu, ir beveik niekuo daugiau.

Veikiantį puslapį traktuokite tik kaip autentifikavimo ir pasiekiamumo įrodymą. Jis įrodo, kad paskyra gali pasiekti ataskaitų serverį ir kad portalas perduoda HTML. Jis nieko nesako apie failų atsakymus, turinio išdėstymo antraštes ar peradresavimus, kurie baigiasi atsisiuntimu, o ne dokumentu.

Tai yra visa priežastis lyginti eksporto kelią atskirai, o ne iš naujo testuoti jau veikiantį puslapį. Dvi užklausos, kurios dalijasi sesija, vis dar yra dvi užklausos.

Trys sąlygos, lemiančios, kur eksportas lūžta

Trys klausimai greitai nustato gedimo vietą, ir kiekvienas atsakymas rodo į skirtingą savininką.

Pirma, ar ta pati ataskaita, paskyra ir formatas teisingai eksportuojami iš vidinio tinklo? Jei taip, ataskaitų serveris ir jo atvaizduotojas yra tvarkingi, o skirtumas yra prieigos kelyje. Antra, ar nepavykęs atsakymas turi failo turinio tipą, ar HTML puslapį su failo plėtiniu? Tai atskiria atvaizduotojo klaidą nuo portalo pakeitimo. Trečia, ar portalas perrašo užklausos URL, ar pašalina antraštes iš atsakymo? Perrašytas URL gali nusileisti visiškai kitame galiniame taške.

Atsakykite į visus tris prieš keisdami bet kurį nustatymą, nes kiekvienas turi skirtingą sprendimą. Atvaizduotojo gedimas priklauso ataskaitų serveriui, pakeistas turinys priklauso portalui, o pašalinta antraštė yra politikos klausimas, o ne klaida.

Užsirašykite atsakymus. Pagalbos atvejis, pastatytas iš tų trijų eilučių, vertas dešimties ekrano kopijų.

Skaitykite eksporto atsakymą, o ne būsenos kodą

Sėkminga HTTP būsena įrodo tik tai, kad kažkas atsakė į užklausą. Tikrinkite turinį ir antraštes kartu, nes įdomus gedimas yra sėkmingas atsakymas su neteisingu turiniu.

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

Antraščių išrašas rodo turinio tipą ir bet kokį turinio išdėstymą, kurį grąžino portalas. Komanda file nustato, kas iš tikrųjų yra turinys, o tekstinis failas ten, kur buvo tikimasi skaičiuoklės, yra klasikinis pakeistas prisijungimo puslapis. Komanda head parodo pakankamai, kad atpažintumėte HTML, neišpildami visos ataskaitos į terminalą.

Pašalinkite sesijos slapukus ir žetonus prieš bendrindami bet kurią jo dalį. Veikiančio eksporto įrašas yra naudingas įrodymas, o kito asmens sesijos įrašas yra incidentas.

Apribokite išimtį programai, o ne paskyrai

Jei portalas perrašo arba blokuoja atsakymą, viliojantis taisymas yra atleisti visą svetainę arba padaryti ataskaitą anoniminę. Abu ištaiso atsisiuntimą ir pašalina priežastį, kodėl portalas egzistuoja. Siaura išimtis įvardija vieną programos kelią, vieną turinio tipą ir vieną kryptį, ir ji lieka peržiūrima to, kas valdo politiką.

Naudokite tą tinklų sietų versiją, kurią iš tikrųjų naudojate, ir jos dokumentuotus programos nustatymus. Parinktis, kurią tiekėjas kadaise apibūdino kaip paliekančią srautą nepakeistą, nėra bendra instrukcija, o jos kopijavimas iš senos forumo temos yra kelias, kuriuo laikina išimtis tampa nuolatine architektūra.

Jei išimties negalima taip siaurai apriboti, eksportas greičiausiai priklauso vidiniam keliui su kitu prieigos metodu, o ne už portalo. Visos svetainės atleidimas yra portalo savininko sprendimas, o ne vienos ataskaitos apėjimas.

Priimkite eksportą, o ne išsaugojimo dialogą

Paskutinė patikra yra pats failas: jis atsidaro, jame yra laukiami stulpeliai, o jo sumos atitinka ataskaitą, kurią patvirtino naudotojas.

Išsaugojimo dialogo pasirodymas nėra sėkmė, o failas, atsidarantis su taisymo įspėjimu, taip pat nėra sėkmė. Palyginkite eilučių skaičių ir vieną žinomą reikšmę su ataskaita ekrane, nes sutrumpintas eksportas praeina kiekvieną testą, kuris žiūri tik į failo dydį. Tada eksportuokite antrą kartą, nes podėlio sluoksnis, kuris kartą pateikia neteisingą turinį, kitą kartą gali pateikti teisingą.

Priimkite darbo eigą, kurios naudotojui reikėjo, ir nieko mažiau. Atsisiuntimas, kuris atsidaro netinkamoje programoje, vis dar yra nepavykęs eksportas.

Susiję straipsniai