Μια επιτυχής απάντηση HTTP/1.1 CONNECT τελειώνει μετά το τμήμα κεφαλίδων της:

HTTP/1.1 200 Connection Established

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

Ο μεσολαβητής δεν πρέπει να προσθέτει Transfer-Encoding ή Content-Length σε μια επιτυχή απάντηση CONNECT. Δεν υπάρχει σώμα απάντησης HTTP για κατάτμηση σε chunks. Η προσθήκη ενός κενού τελικού chunk θα έκανε το αντίθετο: θα έριχνε byte μέσα στη νέα σήραγγα.

Και ο πελάτης έχει απαίτηση: πρέπει να αγνοεί αυτά τα πεδία πλαισίωσης αν εμφανιστούν σε απάντηση CONNECT 2xx. Επομένως ένας κακοσχηματισμένος αποστολέας δεν είναι λόγος να περιγράφεται κάθε συμμορφούμενος πελάτης ως περιμένοντας σώμα με chunks.

Κρατήστε την εγκατεστημένη σύνδεση ανοιχτή για προώθηση. Το κλείσιμό της μετά το 200 καταστρέφει τη σήραγγα· το άνοιγμα άλλης σύνδεσης δεν είναι συνέχεια του αποδεκτού αιτήματος CONNECT.

Μια αποτυχημένη απάντηση CONNECT αντιμετωπίζεται διαφορετικά και μπορεί να φέρει ένα συνηθισμένο σώμα σφάλματος HTTP. Διαχωρίστε αυτή την απάντηση από την επιτυχή παράδοση όταν υλοποιείτε ή διαβάζετε ίχνος μεσολαβητή.

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