Հաշվետվությունը բացվում է զննարկիչում, պարամետրերը ներկայացվում են, իսկ արտահանման կոճակը տալիս է սխալ, դատարկ ներբեռնում կամ ֆայլ, որը աղյուսակը հրաժարվում է բացել։ Այդ համակցությունն ունի ստանդարտ ձև։ Աշխատող հաշվետվության էջը փորձարկել է ներկայացումը և նույնականացումը և ուրիշ ոչինչ։ Արտահանումը առանձին հարցում է իր իսկ պատասխանով, և առանց հաճախորդի պորտալով այն անցնում է նաև վերագրության շերտով, որը երբեք չի նախագծվել ֆայլերի ներբեռնման համար։

Երկու ուղի, մեկ աշխատող էջ

Ներկայացումն ու արտահանումը տարբեր գործողություններ են, նույնիսկ երբ սկսվում են նույն կոճակից։ Հաշվետվությունների սերվերը էջը ներկայացնում է զննարկիչի համար և արտահանումը ներկայացնում է այլ ելքի ընդլայնման միջոցով՝ իր իսկ բովանդակության տեսակով և իր իսկ սխալի վարքով, ինչպես նկարագրում է արտահանման փաստաթղթերը։ Պորտալը, որն առաջինը կատարյալ անցկացնում է, կարող է այնուամենայնիվ աղավաղել երկրորդը, որովհետև երկրորդը պատասխան է, որը պորտալը չէր սպասում տեսնել։ Երկուսը կիսում են սեսիան և հասցեն, և գրեթե ուրիշ ոչինչ։

Աշխատող էջը դիտարկեք միայն որպես նույնականացման և հասանելիության ապացույց։ Այն ապացուցում է, որ հաշիվը կարող է հասնել հաշվետվությունների սերվերին և որ պորտալը փոխանցում է 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-ը ճանաչելու համար՝ առանց ամբողջ հաշվետվությունը տերմինալ թափելու։

Հեռացրեք սեսիայի քուքիներն ու տոկենները նախքան դրա որևէ մասը կիսելը։ Աշխատող արտահանման գրավումը օգտակար ապացույց է, իսկ ուրիշին պատկանող սեսիայի գրավումը միջադեպ է։

Բացառությունը սահմանափակեք հավելվածով, ոչ հաշվով

Եթե պորտալը վերագրում կամ արգելափակում է պատասխանը, գայթակղիչ լուծումը ամբողջ կայքը բացառելն է կամ հաշվետվությունը անանուն դարձնելը։ Երկուսն էլ ուղղում են ներբեռնումը և հեռացնում պորտալի գոյության պատճառը։ Սահմանափակ բացառությունը նշում է մեկ հավելվածի ուղի, մեկ բովանդակության տեսակ և մեկ ուղղություն, և այն մնում է վերանայելի նրա համար, ով տիրապետում է քաղաքականությանը։

Օգտագործեք այն դարպասի տարբերակը, որը դուք իրականում գործարկում եք, և դրա փաստաթղթավորված հավելվածի կարգավորումները։ Տարբերակը, որը մատակարարը մի անգամ նկարագրել է որպես երթևեկությունը անփոփոխ թողնող, ընդհանուր հրահանգ չէ, և այն հին ֆորումի թեմայից պատճենելը այն ուղին է, որով ժամանակավոր բացառությունը դառնում է մշտական ճարտարապետություն։

Եթե բացառությունը հնարավոր չէ այդքան նեղ սահմանափակել, արտահանումը հավանաբար պատկանում է ներքին ուղուն՝ այլ մուտքի մեթոդով, այլ ոչ պորտալի հետևում։ Ամբողջ կայքի բացառումը պորտալի սեփականատիրոջ որոշումն է, ոչ թե մեկ հաշվետվության շրջանցում։

Ընդունեք արտահանումը, ոչ թե պահպանման երկխոսությունը

Վերջին ստուգումը հենց ֆայլն է՝ այն բացվում է, պարունակում է ակնկալվող սյուները, և դրա գումարները համապատասխանում են օգտատիրոջ հաստատած հաշվետվությանը։

Պահպանման երկխոսության հայտնվելը հաջողություն չէ, և վերանորոգման նախազգուշացումով բացվող ֆայլը նույնպես հաջողություն չէ։ Համեմատեք տողերի քանակը և մեկ հայտնի արժեք էկրանի հաշվետվության հետ, որովհետև կտրված արտահանումը անցնում է յուրաքանչյուր թեստ, որը նայում է միայն ֆայլի չափին։ Ապա արտահանեք երկրորդ անգամ, որովհետև քեշի շերտը, որը մեկ անգամ մատուցում է սխալ մարմին, հաջորդ փորձին կարող է մատուցել ճիշտը։

Ընդունեք այն աշխատահոսքը, որն անհրաժեշտ էր օգտատիրոջը, և ոչ պակաս։ Սխալ հավելվածում բացվող ներբեռնումը դեռ ձախողված արտահանում է։

Առնչվող հոդվածներ