Извештај се отвара у прегледачу, параметри се приказују, а дугме за извоз производи грешку, празно преузимање или датотеку коју табела одбија да отвори. Та комбинација има стандардан облик. Радна страница извештаја тестирала је приказивање и аутентификацију и ништа друго. Извоз је одвојен захтев са сопственим одговором, а кроз портал без клијента пролази и кроз слој преписивања који никада није био пројектован за преузимања датотека.

Два пута, једна радна страница

Приказивање и извоз су различите операције чак и када почињу са истог дугмета. Сервер извештаја приказује страницу за прегледач и припрема извоз кроз друго излазно проширење са сопственим типом садржаја и сопственим понашањем при грешци, како описује документација за извоз. Портал који прво пропушта беспрекорно ипак може да унакази друго, јер друго је одговор који портал није очекивао да види. Двоје деле сесију и адресу, и готово ништа друго.

Третирајте радну страницу само као доказ аутентификације и доступности. Она доказује да рачун може да дође до сервера извештаја и да портал прослеђује HTML. Не говори ништа о одговорима са датотекама, заглављима распореда садржаја или преусмеравањима која завршавају преузимањем, а не документом.

То је цео разлог да се пут извоза упореди засебно, уместо да се поново тестира страница која већ ради. Два захтева која деле сесију и даље су два захтева.

Три услова која одлучују где се извоз ломи

Три питања брзо смештају квар, а сваки одговор показује на другог власника.

Прво, да ли се исти извештај, рачун и формат исправно извозе из интерне мреже? Ако извозе, сервер извештаја и његов рендерер су у реду, а разлика је у путу приступа. Друго, да ли неуспели одговор носи тип садржаја датотеке, или HTML страницу са наставком датотеке? То раздваја грешку рендерера од замене коју је направио портал. Треће, да ли портал преписује URL захтева или уклања заглавља из одговора? Преписани URL може да стигне на сасвим другу крајњу тачку.

Одговорите на сва три пре него што промените поставку, јер свако има другачији лек. Квар рендерера припада серверу извештаја, замењено тело припада порталу, а уклоњено заглавље је питање политике, а не грешка.

Запишите одговоре. Захтев за подршку састављен од тих три реда вреди десет снимака екрана.

Читајте одговор извоза, а не статусни код

HTTP статус успеха доказује само да је нешто одговорило на захтев. Прегледајте тело и заглавља заједно, јер занимљив квар је успешан одговор са погрешним садржајем.

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

Испис заглавља показује тип садржаја и сваки распоред садржаја који је портал вратио. Наредба file идентификује шта тело заиста јесте, а текстуална датотека тамо где се очекује табела класична је замењена страница за пријаву. Наредба head показује довољно да препознате HTML без избацивања целог извештаја у терминал.

Уклоните колачиће сесије и токене пре него што било шта од тога поделите. Снимак радног извоза корисан је доказ, а снимак сесије која припада некоме другом је инцидент.

Ограничите изузетак на апликацију, не на рачун

Ако портал преписује или блокира одговор, примамљив поправак је изузети целу локацију или учинити извештај анонимним. Обоје поправља преузимање и уклања разлог због којег портал постоји. Сужени изузетак именује једну путању апликације, један тип садржаја и један смер, и остаје прегледан ономе који поседује политику.

Користите верзију мрежног пролаза коју заиста покрећете и његове документоване поставке апликације. Опција коју је добављач некада описао као ону која оставља промет непромењен није опште упутство, а копирање из старе форумске теме пут је да привремени изузетак постане трајна архитектура.

Ако се изузетак не може тако уско сузити, извоз вероватно припада интерном путу са другачијим начином приступа, а не иза портала. Изузимање целе локације одлука је за власника портала, а не заобилазница за један извештај.

Прихватите извоз, а не дијалог за чување

Последња провера је сама датотека: отвара се, садржи очекиване колоне, а њени збирови одговарају извештају који је корисник одобрио.

Појава дијалога за чување није успех, а датотека која се отвара са упозорењем о поправци такође није успех. Упоредите број редова и једну познату вредност са извештајем на екрану, јер скраћени извоз пролази сваки тест који гледа само величину датотеке. Затим извезите други пут, јер слој кеша који једном послужи погрешно тело може следећи пут послужити исправно.

Прихватите радни ток који је кориснику требао, и ништа мање од тога. Преузимање које се отвори у погрешној апликацији и даље је неуспешан извоз.

Повезани чланци