Σφάλμα HTTP 401 έναντι σφάλματος HTTP 403 - Επεξήγηση αποκρίσεων κώδικα κατάστασης

Έχουμε καλύψει τον κωδικό σφάλματος 403 (Απαγορευμένο) HTTP με κάποια λεπτομέρεια στο παρελθόν, αλλά έχει επίσης σχεδόν πανομοιότυπο αδελφό.

Λοιπόν, ποια είναι ακριβώς η διαφορά μεταξύ των κωδικών κατάστασης 401 (Μη εξουσιοδοτημένη) και 403 (Απαγορευμένη); Σίγουρα εννοούν το ίδιο πράγμα; Ας ρίξουμε μια πιο προσεκτική ματιά!

Πρότυπα RFC

Το πιο ενημερωμένο RFC Standard που ορίζει το 401 (Μη εξουσιοδοτημένο) είναι το RFC 7235

Ο κωδικός κατάστασης 401 (Μη εξουσιοδοτημένος) υποδεικνύει ότι το αίτημα δεν έχει εφαρμοστεί επειδή δεν διαθέτει έγκυρα διαπιστευτήρια ελέγχου ταυτότητας για τον πόρο προορισμού ... Ο πράκτορας χρήστη ΜΠΟΡΕΙ να επαναλάβει το αίτημα με ένα νέο ή αντικατασταθέν πεδίο κεφαλίδας Εξουσιοδότησης.

Ενώ το 403 (Απαγορευμένο) ορίζεται πιο πρόσφατα στο RFC 7231

Ο κωδικός κατάστασης 403 (Απαγορεύεται) υποδεικνύει ότι ο διακομιστής κατανοεί το αίτημα, αλλά αρνείται να το εγκρίνει ... Εάν στο αίτημα παρείχαν διαπιστευτήρια ελέγχου ταυτότητας, ο διακομιστής τα θεωρεί ανεπαρκή για να παραχωρήσουν πρόσβαση.

Συχνές αιτίες

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

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

Αυτές είναι οι δύο πιο κοινές αιτίες για αυτό το ζεύγος σφαλμάτων.

Λιγότερες συχνές αιτίες

Υπάρχουν όμως μερικές περιπτώσεις όπου δεν είναι τόσο απλό όσο αυτό.

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

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

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

Για παράδειγμα, ενδέχεται να έχετε ένα JWT (JSON Web Token) που θέλετε να συμπεριλάβετε στην κεφαλίδα του αιτήματος, το οποίο αναμένει τη μορφή Authorization: Bearer eyJhbGci......yJV_adQssw5c. Εάν ξεχάσετε τη λέξη «Bearer» πριν από το JWT, θα αντιμετωπίσετε το σφάλμα 401.

Έχω αντιμετωπίσει αυτό το πρόβλημα μόνος μου όταν δοκιμάζω API που βρίσκονται υπό ανάπτυξη με τον Postman και ξεχνάω τη σωστή σύνταξη για τις επικεφαλίδες εξουσιοδότησης!

Αυτό είναι

Ελπίζω να ξεκαθαρίσει οποιαδήποτε σύγχυση γύρω από αυτά τα πολύ παρόμοια λάθη.

Εάν το βρήκατε αυτό χρήσιμο ή θέλετε να αμφισβητήσετε ή να επεκτείνετε οτιδήποτε εγείρετε εδώ, μη διστάσετε να επικοινωνήσετε μαζί μου στο Twitter @JacksonBates.