Η αναφορά ανοίγει στο πρόγραμμα περιήγησης, οι παράμετροι αποδίδονται και το κουμπί εξαγωγής παράγει σφάλμα, κενή λήψη ή αρχείο που το υπολογιστικό φύλλο αρνείται να ανοίξει. Αυτός ο συνδυασμός έχει τυπική μορφή. Μια λειτουργική σελίδα αναφοράς έχει δοκιμάσει την απόδοση και τον έλεγχο ταυτότητας και τίποτε άλλο. Η εξαγωγή είναι ξεχωριστό αίτημα με τη δική του απόκριση, και μέσα από πύλη χωρίς πελάτη περνά επίσης από ένα στρώμα επανεγγραφής που δεν σχεδιάστηκε ποτέ για λήψεις αρχείων.

Δύο διαδρομές, μία λειτουργική σελίδα

Η απόδοση και η εξαγωγή είναι διαφορετικές λειτουργίες ακόμη και όταν ξεκινούν από το ίδιο κουμπί. Ο διακομιστής αναφορών αποδίδει τη σελίδα για ένα πρόγραμμα περιήγησης και αποδίδει την εξαγωγή μέσω άλλης επέκτασης εξόδου με δικό της τύπο περιεχομένου και δική της συμπεριφορά σφάλματος, όπως περιγράφει η τεκμηρίωση εξαγωγής. Μια πύλη που περνά τέλεια το πρώτο μπορεί ακόμη να αλλοιώσει το δεύτερο, γιατί το δεύτερο είναι μια απόκριση που η πύλη δεν περίμενε να δει. Τα δύο μοιράζονται μια συνεδρία και μια διεύθυνση, και σχεδόν τίποτε άλλο.

Αντιμετωπίστε τη λειτουργική σελίδα μόνο ως απόδειξη ελέγχου ταυτότητας και προσβασιμότητας. Αποδεικνύει ότι ο λογαριασμός φτάνει στον διακομιστή αναφορών και ότι η πύλη προωθεί 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 χωρίς να χύσετε μια ολόκληρη αναφορά σε ένα τερματικό.

Αφαιρέστε τα cookies συνεδρίας και τα διακριτικά πριν μοιραστείτε οποιοδήποτε μέρος τους. Μια καταγραφή μιας λειτουργικής εξαγωγής είναι χρήσιμη απόδειξη, και μια καταγραφή συνεδρίας που ανήκει σε κάποιον άλλο είναι περιστατικό.

Περιορίστε την εξαίρεση στην εφαρμογή, όχι στον λογαριασμό

Αν η πύλη ξαναγράφει ή μπλοκάρει την απόκριση, η δελεαστική επισκευή είναι να εξαιρέσετε ολόκληρο τον ιστότοπο ή να κάνετε την αναφορά ανώνυμη. Και τα δύο διορθώνουν τη λήψη και αφαιρούν τον λόγο ύπαρξης της πύλης. Μια περιορισμένη εξαίρεση ονομάζει μία διαδρομή εφαρμογής, έναν τύπο περιεχομένου και μία κατεύθυνση, και παραμένει αναθεωρήσιμη από όποιον κατέχει την πολιτική.

Χρησιμοποιήστε την έκδοση της πύλης που εκτελείτε πραγματικά και τις τεκμηριωμένες ρυθμίσεις εφαρμογών της. Μια επιλογή που κάποτε ένας προμηθευτής περιέγραψε ως αφήνοντας την κίνηση αμετάβλητη δεν είναι γενική οδηγία, και το να την αντιγράψετε από ένα παλιό νήμα φόρουμ είναι ο τρόπος με τον οποίο μια προσωρινή εξαίρεση γίνεται μόνιμη αρχιτεκτονική.

Αν η εξαίρεση δεν μπορεί να περιοριστεί τόσο στενά, η εξαγωγή πιθανώς ανήκει στην εσωτερική διαδρομή με διαφορετική μέθοδο πρόσβασης αντί πίσω από την πύλη. Μια εξαίρεση για ολόκληρο τον ιστότοπο είναι απόφαση του ιδιοκτήτη της πύλης, όχι παράκαμψη για μία αναφορά.

Αποδεχτείτε την εξαγωγή, όχι το παράθυρο αποθήκευσης

Ο τελευταίος έλεγχος είναι το ίδιο το αρχείο: ανοίγει, κρατά τις αναμενόμενες στήλες και τα σύνολά του ταιριάζουν με την αναφορά που ενέκρινε ο χρήστης.

Η εμφάνιση ενός παραθύρου αποθήκευσης δεν είναι επιτυχία, και ένα αρχείο που ανοίγει με προειδοποίηση επιδιόρθωσης επίσης δεν είναι επιτυχία. Συγκρίνετε ένα πλήθος γραμμών και μία γνωστή τιμή με την αναφορά στην οθόνη, γιατί μια κολοβωμένη εξαγωγή περνά κάθε δοκιμή που κοιτά μόνο το μέγεθος του αρχείου. Στη συνέχεια εξαγάγετε δεύτερη φορά, γιατί ένα στρώμα προσωρινής μνήμης που σερβίρει μία φορά το λάθος σώμα μπορεί να σερβίρει το σωστό στην επόμενη προσπάθεια.

Αποδεχτείτε τη ροή εργασίας που χρειαζόταν ο χρήστης, και τίποτε λιγότερο. Μια λήψη που ανοίγει στη λάθος εφαρμογή είναι ακόμη μια αποτυχημένη εξαγωγή.

Σχετικά άρθρα