Παύσεις ανάρτησης HTTP και Expect: 100-continue
Αναγνωρίστε την ανταλλαγή Expect: 100-continue και ξεχωρίστε το σύντομο σημείο απόφασής της από μια ανάρτηση που κόλλησε κατά τη μεταφορά δεδομένων.
Η σύνδεση ανοίγει. Οι κεφαλίδες του αιτήματος φεύγουν. Το αρχείο φαίνεται να μην κινείται. Μια εξήγηση είναι ότι ο πελάτης περιμένει απάντηση στο Expect: 100-continue πριν στείλει το σώμα του.
Ο μηχανισμός επιτρέπει στον παραλήπτη να απορρίψει ένα αίτημα από τις κεφαλίδες του πριν σταλεί μια δυνητικά μεγάλη ανάρτηση. Η συνήθης επιτυχής ακολουθία είναι:
request headers → 100 Continue → request body → final responseΤο 100 είναι πληροφοριακό: επιτρέπει στον πελάτη να συνεχίσει, αλλά δεν σημαίνει ότι το αρχείο αποθηκεύτηκε ή ότι η λειτουργία της εφαρμογής πέτυχε. Ένα Git push που επιστρέφει HTTP 417 είναι μια συγκεκριμένη περίπτωση αποτυχίας προσδοκίας.
Βρείτε ποια απάντηση έλαβε ο πελάτης
| Παρατήρηση | Σημασία προς διερεύνηση |
|---|---|
| 100 Continue | Ο πελάτης μπορεί να συνεχίσει με το σώμα |
| Οριστική απόρριψη πριν από το σώμα | Η λειτουργία απορρίφθηκε στο στάδιο των κεφαλίδων |
| Καμία αναμενόμενη ενδιάμεση απάντηση | Η πολιτική αναμονής του πελάτη και ο χειρισμός σε αυτή τη διαδρομή |
Το curl παρέχει ξεχωριστή ρύθμιση αναμονής για το expect-continue. Αν αυτή η αναμονή του libcurl λήξει χωρίς την αναμενόμενη απάντηση, στέλνει το σώμα παρ' όλα αυτά· η λήξη δεν είναι αυτόματα αποτυχία ολόκληρης της μεταφοράς. Η ρύθμιση είναι ξεχωριστή από τον χρόνο που επιτρέπεται για την πλήρη μεταφορά. Η αύξηση του τελευταίου μπορεί να αφήσει την ίδια αρχική παύση ανεξήγητη.
Προσδιορίστε επίσης ποια συνομιλία HTTP μεταφέρει το Expect. Με συνηθισμένο CONNECT προς προορισμό HTTPS, η ανταλλαγή ανάρτησης του ιστότοπου βρίσκεται μέσα στο TLS· ο μεσολαβητής προώθησης δεν εξετάζει απλώς την εσωτερική κεφαλίδα προσδοκίας. Μια διαδρομή υποκλοπής ή μεταφοράς απλού κειμένου είναι διαφορετική.
Η αφαίρεση της προσδοκίας μπορεί να είναι συνειδητή επιλογή συμβατότητας, αλλά σημαίνει ότι ο πελάτης μπορεί να αρχίσει να στέλνει μεγάλο σώμα πριν μάθει για μια πρώιμη απόρριψη. Συγκρίνετε αυτή τη συμπεριφορά με την πραγματική απαίτηση. Μην περιγράφετε μια ιστορική λύση για παλιό μεσολαβητή ως καθολική οδηγία αφαίρεσης της κεφαλίδας από κάθε ανάρτηση.