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

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

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