Εισαγωγή στο HTTP: όλα όσα πρέπει να γνωρίζετε

Σε αυτό το άρθρο, θα σας καθοδηγήσω πώς λειτουργεί ο παγκόσμιος ιστός σε θεμελιώδες επίπεδο.

Η βασική τεχνολογία είναι HTTP - Hypertext Transfer Protocol. Είναι το πρωτόκολλο επικοινωνίας που χρησιμοποιείτε όταν περιηγείστε στον Ιστό.

Σε θεμελιώδες επίπεδο, όταν επισκέπτεστε έναν ιστότοπο, το πρόγραμμα περιήγησής σας υποβάλλει ένα αίτημα HTTP σε έναν διακομιστή. Στη συνέχεια, αυτός ο διακομιστής αποκρίνεται με έναν πόρο (μια εικόνα, ένα βίντεο ή τον HTML μιας ιστοσελίδας) - τον οποίο το πρόγραμμα περιήγησής σας εμφανίζει στη συνέχεια για εσάς.

Αυτό είναι το μοντέλο που βασίζεται σε μηνύματα HTTP. Κάθε αλληλεπίδραση HTTP περιλαμβάνει ένα αίτημα και μια απάντηση.

Από τη φύση του, το HTTP είναι ανιθαγενές.

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

Διευθύνσεις URL

Η διεύθυνση URL (Uniform Resource Locator) είναι ίσως η πιο γνωστή ιδέα του Διαδικτύου. Είναι επίσης μια από τις πιο σημαντικές και χρήσιμες έννοιες. Η διεύθυνση URL είναι μια διεύθυνση ιστού που χρησιμοποιείται για την αναγνώριση πόρων στον Ιστό.

Η ιδέα του διαδικτύου είναι δομημένη γύρω από πόρους. Από την αρχή του, ο Ιστός ήταν η πλατφόρμα για κοινή χρήση αρχείων κειμένου / HTML, εγγράφων, εικόνων κ.λπ. και ως τέτοια μπορεί να θεωρηθεί μια συλλογή πόρων.

Πρωτόκολλο  - Τις περισσότερες φορές είναι HTTP (ή HTTPS για μια ασφαλή έκδοση του HTTP).

Άλλα αξιοσημείωτα πρωτόκολλα είναι:

  • File Transfer Protocol (FTP) - είναι ένα τυπικό πρωτόκολλο που χρησιμοποιείται για τη μεταφορά αρχείων μεταξύ πελάτη και διακομιστή μέσω δικτύου.
  • Το Simple Mail Transfer Protocol (SMTP) είναι ένα πρότυπο για τη μετάδοση email.

Τομέας  - Όνομα που χρησιμοποιείται για τον προσδιορισμό μίας ή περισσότερων διευθύνσεων IP όπου βρίσκεται ο πόρος.

Διαδρομή — Καθορίζει τη θέση των πόρων στο διακομιστή. Χρησιμοποιεί την ίδια λογική με μια τοποθεσία πόρων που χρησιμοποιείται στη συσκευή στην οποία διαβάζετε αυτό το άρθρο (δηλαδή /search/cars/VWBeetle.pdf ή C: / my cars / VWBeetle.pdf).

Παράμετροι  - Πρόσθετα δεδομένα που χρησιμοποιούνται για την αναγνώριση ή το φιλτράρισμα του πόρου στο διακομιστή.

Σημείωση : Κατά την αναζήτηση άρθρων και περισσότερες πληροφορίες σχετικά με το HTTP, ενδέχεται να συναντήσετε τον όρο URI (ή ομοιόμορφο αναγνωριστικό πόρου). Το URI χρησιμοποιείται μερικές φορές αντί για διεύθυνση URL, αλλά κυρίως σε επίσημες προδιαγραφές και από άτομα που θέλουν να αναδείξουν. :)

Αιτήματα HTTP

Στο HTTP, κάθε αίτημα πρέπει να έχει διεύθυνση URL. Επιπλέον, το αίτημα χρειάζεται μια μέθοδο. Οι τέσσερις βασικές μέθοδοι HTTP είναι:

  • ΠΑΙΡΝΩ
  • ΒΑΖΩ
  • ΘΕΣΗ
  • ΔΙΑΓΡΑΦΩ

Θα εξηγήσω αυτές τις μεθόδους και πολλά άλλα, στην ενότητα Μέθοδοι HTTP αυτού του άρθρου.

Και αυτές οι μέθοδοι αντιστοιχούν άμεσα σε ενέργειες:

  • ανάγνωση
  • εκσυγχρονίζω
  • δημιουργώ
  • διαγράφω

Όλα τα μηνύματα HTTP έχουν μία ή περισσότερες κεφαλίδες, ακολουθούμενη από ένα προαιρετικό σώμα μηνυμάτων Το σώμα περιέχει τα δεδομένα που θα σταλούν με το αίτημα ή τα δεδομένα που θα ληφθούν με την απάντηση.

Το πρώτο μέρος κάθε αίτησης HTTP περιέχει τρία στοιχεία:

Παράδειγμα:

  • GET / προσθήκες / αναζήτηση-αποτέλεσμα? Item = vw + σκαθάρι HTTP / 1.1

Όταν ένα URL περιέχει ένα "?" σημάδι, σημαίνει ότι περιέχει ένα ερώτημα. Αυτό σημαίνει ότι στέλνει παραμέτρους του πόρου που ζητήθηκε.

  1. Το πρώτο μέρος είναι μια μέθοδος που λέει ποια μέθοδο HTTP χρησιμοποιείται. Η πιο συχνά χρησιμοποιούμενη είναι η μέθοδος GET. Η μέθοδος GET ανακτά έναν πόρο από τον διακομιστή ιστού και δεδομένου ότι το GET δεν έχει σώμα μηνυμάτων τίποτα μετά την ανάγκη της κεφαλίδας.
  2. Το δεύτερο μέρος είναι μια ζητούμενη διεύθυνση URL.
  3. Το τρίτο μέρος είναι μια έκδοση HTTP που χρησιμοποιείται. Έκδοση 1.1. είναι η πιο κοινή έκδοση για τα περισσότερα προγράμματα περιήγησης, ωστόσο, η έκδοση 2.0 αναλαμβάνει.

Υπάρχουν επίσης μερικά άλλα ενδιαφέροντα πράγματα σε ένα αίτημα HTTP:

Κεφαλίδα αναφοράς  - λέει τη διεύθυνση URL από την οποία προήλθε το αίτημα.

User-Agent header  - πρόσθετες πληροφορίες σχετικά με το πρόγραμμα περιήγησης που χρησιμοποιείται για τη δημιουργία του αιτήματος.

Κεφαλίδα κεντρικού υπολογιστή  - προσδιορίζει μοναδικά ένα όνομα κεντρικού υπολογιστή. Είναι απαραίτητο όταν πολλές ιστοσελίδες φιλοξενούνται στον ίδιο διακομιστή.

Κεφαλίδα cookie  - υποβάλλει επιπλέον παραμέτρους στον πελάτη.

Απαντήσεις HTTP

Όπως και στα αιτήματα HTTP, οι απαντήσεις HTTP αποτελούνται επίσης από τρία στοιχεία:

Παράδειγμα:

HTTP / 1.1 200 ΟΚ

  1. Το πρώτο μέρος είναι η έκδοση HTTP που χρησιμοποιείται.
  2. Το δεύτερο μέρος είναι ο αριθμητικός κωδικός του αποτελέσματος για το αίτημα.
  3. Το τρίτο μέρος είναι μια περιγραφή κειμένου του δεύτερου μέρους.

Υπάρχουν κάποια άλλα ενδιαφέροντα πράγματα σε μια απόκριση HTTP:

Κεφαλίδα διακομιστή  - πληροφορίες σχετικά με το λογισμικό διακομιστή ιστού που χρησιμοποιείται.

Set-Cookie header  - εκδίδει το cookie στο πρόγραμμα περιήγησης.

Σώμα μηνυμάτων  - είναι κοινό για μια απόκριση HTTP να διατηρεί ένα σώμα μηνυμάτων.

Κεφαλίδα μήκους περιεχομένου  - λέει το μέγεθος του σώματος μηνυμάτων σε byte.

Μέθοδοι HTTP

Οι πιο συνηθισμένες μέθοδοι είναι GET και POST. Αλλά υπάρχουν και μερικοί άλλοι.

GET  - Χρησιμοποιείτε αυτήν τη μέθοδο για να ζητήσετε δεδομένα από έναν καθορισμένο πόρο όπου τα δεδομένα δεν τα τροποποιούν με οποιονδήποτε τρόπο. Τα αιτήματα GET δεν αλλάζουν την κατάσταση των πόρων.

POST  - Χρησιμοποιείτε αυτήν τη μέθοδο για την αποστολή δεδομένων σε έναν διακομιστή για τη δημιουργία ενός πόρου.

PUT - Χρησιμοποιείτε αυτήν τη μέθοδο για να ενημερώσετε τον υπάρχοντα πόρο σε έναν διακομιστή χρησιμοποιώντας το περιεχόμενο στο κύριο μέρος του αιτήματος. Σκεφτείτε το ως έναν τρόπο για να «επεξεργαστείτε» κάτι.

HEAD  - Χρησιμοποιείτε αυτήν τη μέθοδο με τον ίδιο τρόπο που χρησιμοποιείτε το GET, αλλά με τη διάκριση ότι η επιστροφή μιας μεθόδου HEAD δεν πρέπει να περιέχει σώμα στην απόκριση. Αλλά η επιστροφή θα περιέχει τις ίδιες κεφαλίδες σαν να χρησιμοποιήθηκε το GET. Χρησιμοποιείτε τη μέθοδο HEAD για να ελέγξετε εάν ο πόρος υπάρχει πριν από την υποβολή αιτήματος GET.

TRACE -  Χρησιμοποιείτε αυτήν τη μέθοδο για διαγνωστικούς σκοπούς. Η απάντηση θα περιέχει στο σώμα της το ακριβές περιεχόμενο του μηνύματος αιτήματος.

ΕΠΙΛΟΓΕΣ  - Χρησιμοποιείτε αυτήν τη μέθοδο για να περιγράψετε τις επιλογές επικοινωνίας (μέθοδοι HTTP) που είναι διαθέσιμες για τον πόρο προορισμού.

PATCH -  Χρησιμοποιείτε αυτήν τη μέθοδο για την εφαρμογή μερικών τροποποιήσεων σε έναν πόρο.

ΔΙΑΓΡΑΦΗ - Χρησιμοποιείτε αυτήν τη μέθοδο για να διαγράψετε τον καθορισμένο πόρο.

ΥΠΟΛΟΙΠΟ

Η αντιπροσωπευτική μεταφορά κατάστασης (REST) ​​είναι ένα στυλ αρχιτεκτονικής όπου τα αιτήματα και οι απαντήσεις περιέχουν αναπαραστάσεις της τρέχουσας κατάστασης του πόρου του συστήματος.

«Κανονικός» τρόπος:

  • //carapp.com/search?make=wv&model=beetle

Στυλ REST:

  • //carapp.com/search/vw/beetle

Μπορείτε να μάθετε περισσότερα για το REST εδώ εάν είστε περίεργοι.

Κεφαλίδες HTTP

Υπάρχουν τρία βασικά στοιχεία που συνθέτουν τη δομή αιτήματος / απόκρισης. Αυτά περιλαμβάνουν:

  • Πρώτη γραμμή
  • Κεφαλίδες
  • Σώμα / Περιεχόμενο

Μιλήσαμε ήδη για την πρώτη γραμμή στα αιτήματα και τις απαντήσεις HTTP και αναφέρθηκε επίσης η λειτουργία του σώματος. Τώρα θα μιλήσουμε για κεφαλίδες HTTP.

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

Όπως είπα ήδη, το κύριο μέρος του μηνύματος περιλαμβάνει τα δεδομένα που πρέπει να σταλούν με το αίτημα ή τα δεδομένα που ελήφθησαν μαζί με την απάντηση.

Υπάρχουν διάφοροι τύποι κεφαλίδων που ομαδοποιούνται με βάση τη χρήση τους σε 4 ευρείες κατηγορίες:

  • Γενική κεφαλίδα  - Κεφαλίδες που μπορούν να χρησιμοποιηθούν τόσο σε αιτήματα όσο και σε μηνύματα απόκρισης και ανεξάρτητα από την ανταλλαγή δεδομένων.
  • Request header  - Αυτές οι κεφαλίδες καθορίζουν παραμέτρους για τα δεδομένα που ζητούνται ή παραμέτρους που παρέχουν σημαντικές πληροφορίες σχετικά με τον πελάτη που υποβάλλει το αίτημα.
  • Κεφαλίδα απόκρισης  - Αυτές οι κεφαλίδες περιέχουν πληροφορίες σχετικά με την εισερχόμενη απόκριση.
  • Κεφαλίδα οντότητας  - Οι κεφαλίδες οντότητας περιγράφουν το περιεχόμενο που αποτελεί το κύριο μέρος του μηνύματος.

Κωδικοί κατάστασης HTTP

Περιηγηθείτε στον Ιστό, ενδέχεται να αντιμετωπίσατε σελίδες "Σφάλμα 404: δεν βρέθηκαν" ή σελίδες "500 σφάλματα: ο διακομιστής δεν αποκρίνεται"

Αυτοί είναι κωδικοί κατάστασης HTTP.

Κάθε μήνυμα απόκρισης HTTP πρέπει να περιέχει έναν κωδικό κατάστασης HTTP στην πρώτη του γραμμή, που να μας λέει το αποτέλεσμα του αιτήματος.

Υπάρχουν πέντε ομάδες κωδικών κατάστασης που ομαδοποιούνται με το πρώτο ψηφίο:

  • 1xx - Ενημερωτικό.
  • 2xx - Το αίτημα ήταν επιτυχές.
  • 3xx - Ο πελάτης ανακατευθύνεται σε διαφορετικό πόρο.
  • 4xx - Το αίτημα περιέχει κάποιο είδος σφάλματος.
  • 5xx - Ο διακομιστής αντιμετώπισε σφάλμα κατά την εκτέλεση του αιτήματος.

Ακολουθεί μια πλήρης λίστα των κωδικών απόκρισης κατάστασης HTTP και η εξήγησή τους.

HTTPS (Hypertext Transfer Protocol Secure)

Η ασφαλής έκδοση του πρωτοκόλλου HTTP είναι το HyperText Transfer Protocol Secure (HTTPS). Το HTTPS παρέχει κρυπτογραφημένη επικοινωνία μεταξύ ενός προγράμματος περιήγησης (πελάτη) και του ιστότοπου (διακομιστής).

Στο HTTPS, το πρωτόκολλο επικοινωνίας κρυπτογραφείται χρησιμοποιώντας Transport Layer Security (TLS) ή Secure Sockets Layer (SSL).

Το πρωτόκολλο επομένως ονομάζεται επίσης HTTP μέσω TLS ή HTTP μέσω SSL.

Και τα δύο πρωτόκολλα TLS και SSL χρησιμοποιούν ασύμμετρο σύστημα κρυπτογράφησης. Τα ασύμμετρα συστήματα κρυπτογράφησης χρησιμοποιούν ένα δημόσιο κλειδί (κλειδί κρυπτογράφησης) και ένα ιδιωτικό κλειδί (κλειδιά αποκρυπτογράφησης) για την κρυπτογράφηση ενός μηνύματος.

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

Χειραψία SSL / TLS

Όταν ζητάτε σύνδεση HTTPS σε έναν ιστότοπο, ο ιστότοπος στέλνει το πιστοποιητικό SSL του στο πρόγραμμα περιήγησής σας. Αυτή η διαδικασία όπου το πρόγραμμα περιήγησης και ο ιστότοπός σας ξεκινούν την επικοινωνία ονομάζεται "χειραψία SSL / TLS".

Η χειραψία SSL / TLS περιλαμβάνει μια σειρά βημάτων όπου το πρόγραμμα περιήγησης και ο ιστότοπος επικυρώνουν ο ένας τον άλλον και ξεκινούν την επικοινωνία μέσω της σήραγγας SSL / TLS.

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

Οφέλη του HTTPS

Τα κύρια οφέλη ενός HTTPS είναι:

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

Ευχαριστούμε που το διαβάσατε! Δείτε περισσότερα άρθρα όπως αυτό στο προφίλ μου στο FreeCodeCamp. Και δείτε άλλα διασκεδαστικά πράγματα που δημιουργώ στη σελίδα μου στο GitHub.