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

Άποψη: 9827|Απάντηση: 0

Πρωτόκολλο HTTP Μεταφορά-Κωδικοποίηση (τεμαχισμένο)

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 24/9/2019 6:07:57 μ.μ. | | | |
1. Ιστορικό:

  • Μόνιμα προβλήματα σύνδεσης: Για μη μόνιμες συνδέσεις, το πρόγραμμα περιήγησης μπορεί να ορίσει τα όρια της αιτούσας οντότητας ή της οντότητας απόκρισης ανάλογα με το εάν η σύνδεση είναι απενεργοποιημένη ή όχι. Για συνεχείς συνδέσεις, αυτή η προσέγγιση προφανώς δεν λειτουργεί. Μερικές φορές, παρόλο που έχω στείλει όλα τα δεδομένα, το πρόγραμμα περιήγησης δεν γνωρίζει αν θα έρθουν νέα δεδομένα στην ανοιχτή σύνδεση, οπότε απλώς περιμένει.
  • Επίλυση με μήκος περιεχομένου: Υπολογίστε το μήκος της οντότητας και πείτε στο άλλο μέρος μέσα από το κεφάλι. Το πρόγραμμα περιήγησης μπορεί να πει ότι η οντότητα απόκρισης έχει τελειώσει από τις πληροφορίες μήκους του Content-Length
  • Νέο πρόβλημα με το μήκος περιεχομένου: Δεδομένου ότι το πεδίο Content-Length πρέπει να αντικατοπτρίζει πραγματικά το μήκος της οντότητας, το μήκος είναι άγνωστο για περιεχόμενο που δημιουργείται δυναμικά μέχρι να δημιουργηθεί το περιεχόμενο. Προς το παρόν, για να λάβετε το μήκος με ακρίβεια, μπορείτε να ανοίξετε μόνο ένα αρκετά μεγάλο buffer και να περιμένετε να δημιουργηθεί όλο το περιεχόμενο πριν από τον υπολογισμό. Ωστόσο, αυτό απαιτεί περισσότερη επιβάρυνση μνήμης αφενός και, αφετέρου, θα κάνει τον πελάτη να περιμένει περισσότερο.
  • Χρειαζόμαστε έναν νέο μηχανισμό που να μην βασίζεται στο μήκος της κεφαλίδας και να γνωρίζει τα όρια των οντοτήτων - Μεταφορά-Κωδικοποίηση: τεμαχισμένη.

2. Μεταφορά-Κωδικοποίηση (τεμαχισμένη)

  • Το Transfer-Encoding είναι ένα πεδίο κεφαλίδας HTTP (response header field), που κυριολεκτικά σημαίνει "κωδικοποίηση μεταφοράς". Η πιο πρόσφατη προδιαγραφή HTTP ορίζει μόνο έναν τύπο μεταφοράς κωδικοποίησης: chunked.
  • Η κωδικοποίηση μεταφοράς τεμαχίων είναι ένας μηχανισμός μεταφοράς δεδομένων στο Hypertext Transfer Protocol (HTTP) που επιτρέπει στα δεδομένα HTTP που αποστέλλονται από έναν διακομιστή web στον πελάτη να χωρίζονται σε πολλά μέρη. Η κωδικοποίηση μεταφοράς μπλοκ είναι διαθέσιμη μόνο στην έκδοση 1.1 του πρωτοκόλλου HTTP (HTTP/1.1).
  • Τα δεδομένα αναλύονται σε μια σειρά από κομμάτια και αποστέλλονται σε ένα ή περισσότερα κομμάτια, έτσι ώστε ο διακομιστής να μπορεί να στέλνει δεδομένα χωρίς να γνωρίζει εκ των προτέρων το συνολικό μέγεθος του απεσταλμένου περιεχομένου.


Ειδικές μέθοδοι

  • Μετά την προσθήκη Transfer-Encoding: τεμαχισμένο στην κεφαλίδα, σημαίνει ότι το πακέτο είναι τεμαχισμένο. Σε αυτήν την περίπτωση, οι οντότητες στο πακέτο πρέπει να μεταδοθούν σε μια σειρά από κομμάτια.
  • Κάθε κομμάτι περιέχει την τιμή και τα δεδομένα του δεκαεξαδικού μήκους και η τιμή μήκους είναι αποκλειστική για μία γραμμή και το μήκος δεν περιλαμβάνει το CRLF στο τέλος της, ούτε το CRLF στο τέλος των τμηματικών δεδομένων.
  • Η τιμή του τελευταίου μήκους τμήματος πρέπει να είναι 0 και τα αντίστοιχα δεδομένα τμήματος δεν έχουν περιεχόμενο, υποδεικνύοντας το τέλος της οντότητας.




asp.net Βασικός κωδικός δοκιμής:







Προηγούμενος:Content-Length του πρωτοκόλλου Http
Επόμενος:Τρεις παράγοντες που με κάνουν να καταργήσω το Chrome
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com